diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/cosmetic/types/CosmeticBackpackType.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/cosmetic/types/CosmeticBackpackType.java index 86681c49..ff4e6fe8 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/cosmetic/types/CosmeticBackpackType.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/cosmetic/types/CosmeticBackpackType.java @@ -10,12 +10,14 @@ import org.spongepowered.configurate.ConfigurationNode; public class CosmeticBackpackType extends Cosmetic { - ConfigurationNode config; + private String modelName; + private ConfigurationNode config; public CosmeticBackpackType(String id, ConfigurationNode config) { super(id, config); this.config = config; + modelName = config.node("model").getString(); } @Override @@ -36,4 +38,8 @@ public class CosmeticBackpackType extends Cosmetic { user.getUserBackpackManager().getArmorstand().setRotation(loc.getYaw(), loc.getPitch()); user.getUserBackpackManager().showBackpack(); } + + public String getModelName() { + return modelName; + } } diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/user/manager/UserBackpackManager.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/user/manager/UserBackpackManager.java index ef3f8941..8fbff48b 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/user/manager/UserBackpackManager.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/user/manager/UserBackpackManager.java @@ -1,13 +1,20 @@ package com.hibiscusmc.hmccosmetics.user.manager; +import com.hibiscusmc.hmccosmetics.HMCCosmeticsPlugin; import com.hibiscusmc.hmccosmetics.cosmetic.CosmeticSlot; import com.hibiscusmc.hmccosmetics.cosmetic.types.CosmeticBackpackType; +import com.hibiscusmc.hmccosmetics.hooks.Hooks; import com.hibiscusmc.hmccosmetics.nms.NMSHandlers; import com.hibiscusmc.hmccosmetics.user.CosmeticUser; import com.hibiscusmc.hmccosmetics.util.MessagesUtil; +import com.ticxo.modelengine.api.ModelEngineAPI; +import com.ticxo.modelengine.api.model.ActiveModel; +import com.ticxo.modelengine.api.model.ModeledEntity; import org.bukkit.entity.ArmorStand; import org.bukkit.inventory.ItemStack; +import java.util.logging.Level; + public class UserBackpackManager { private boolean hideBackpack; @@ -36,6 +43,16 @@ public class UserBackpackManager { this.invisibleArmorstand = (ArmorStand) NMSHandlers.getHandler().spawnBackpack(user, cosmeticBackpackType); + if (cosmeticBackpackType.getModelName() != null && HMCCosmeticsPlugin.hasModelEngine()) { + if (ModelEngineAPI.api.getModelRegistry().getBlueprint(cosmeticBackpackType.getModelName()) == null) { + MessagesUtil.sendDebugMessages("Invalid Model Engine Blueprint " + cosmeticBackpackType.getModelName(), Level.SEVERE); + return; + } + ModeledEntity modeledEntity = ModelEngineAPI.getOrCreateModeledEntity(invisibleArmorstand); + ActiveModel model = ModelEngineAPI.createActiveModel(ModelEngineAPI.getBlueprint(cosmeticBackpackType.getModelName())); + model.setCanHurt(false); + modeledEntity.addModel(model, false); + } MessagesUtil.sendDebugMessages("spawnBackpack Bukkit - Finish"); }