KubeJS Integrated - SAGESSE-CN/Armourers-Workshop GitHub Wiki
AW add a wardrobe
field to all entities in KubeJS
var wardrobe = entity.wardrobe;
Get skin file from sources:
skin_identifier = "ks:10830"; // from <GlobalSkinLibrary>/<globalSkinId>
skin_identifier = "db:xxxxx"; // from <WorldDir>/skin-database/objects/xxxxx
skin_identifier = "ws:/path/to/file.armour"; // from <GameDir>/skin-library/path/to/file.armour
Get a skin object:
skin = wardrobe.loadSkin(skin_identifier);
skin = wardrobe.loadSkinFromDB(skin_identifier);
That wardrobe.loadSkinFromDB
will save the skin to the skin skin-database, and the returns a object referenced to skin-database. so you just call once at the right time, and then reuse this skin object.
skin_identifier = "ks:10830";
skin = all_loaded_skins[skin_identifier];
if (skin == null) {
skin = wardrobe.loadSkinFromDB(skin_identifier);
all_loaded_skins[skin_identifier] = skin;
console.log("load skin from data base: " + skin_identifier);
}
Get a skin object from item stack:
skin = wardrobe.loadSkinByItem(itemStack);
Get a skin object to item stack:
itemStack = skin.asItemStack();
Get a skin object type:
skin_type = skin.type;
Get a skin object identifier:
skin_identifier = skin.identifier;
Add a skin into item stack:
skin.addTo(itemStack);
Clear a skin from item stack:
skin.removeFrom(itemStack);
Although you can always get the wardrobe object, but you can't change wardrobe when AW unsupported entity, so you need check it first:
if (wardrobe.isValid()) {
// dosomething.
}
Get a equipped skin item stack from entity:
itemStack = wardrobe.getItem("outfit", 0);
Equip a skin item stack into entity:
wardrobe.setItem(skin.type, 0, skin.asItemStack());
Unequip a skin item stack from entity, you need equip a empty item stack:
wardrobe.setItem("outfit", 0, Item.empty);
Unequip all skin item stack from entity:
wardrobe.clear();
Change the render optins:
wardrobe.enable("render.head");
wardrobe.enable("render.chest");
wardrobe.enable("render.legs");
wardrobe.enable("render.feet");
wardrobe.disable("render.extra");
in the kubejs 6.x
var all_loaded_skins = {}
EntityEvents.spawned("minecraft:zombie", event => {
var wardrobe = event.entity.wardrobe;
if (wardrobe.isValid()) {
var ids = ["ks:10830", "ks:13147"];
var id = ids[Math.floor(Math.random()*ids.length)]; // random give skin
var skin = all_loaded_skins[id];
if (skin == null) {
skin = wardrobe.loadSkinFromDB(id);
all_loaded_skins[id] = skin;
console.log("load skin from data base: " + id);
}
wardrobe.setItem(skin.type, 0, skin.asItemStack());
console.log("set " + skin.type + " skin: " + id);
}
})
in the kubejs 5.x
var all_loaded_skins = {}
onEvent("entity.spawned", event => {
if (event.entity.type != "minecraft:zombie") {
return
}
var wardrobe = event.entity.wardrobe;
if (wardrobe.isValid()) {
var ids = ["ks:10830", "ks:13147"];
var id = ids[Math.floor(Math.random()*ids.length)]; // random give skin
var skin = all_loaded_skins[id];
if (skin == null) {
skin = wardrobe.loadSkinFromDB(id);
all_loaded_skins[id] = skin;
console.log("load skin from data base: " + id);
}
wardrobe.setItem(skin.type, 0, skin.asItemStack());
console.log("set " + skin.type + " skin: " + id);
}
})