From 79694afc46d2babc2b7c6f976195f638bfd9c9e6 Mon Sep 17 00:00:00 2001 From: Robotgiggle <88736742+Robotgiggle@users.noreply.github.com> Date: Mon, 24 Aug 2026 14:46:08 -0400 Subject: [PATCH 01/14] Very basic model setup for neoforge --- .../client/model/HexModelLayers.java | 2 +- .../client/model/HexRobesModel.java | 152 ++++++++++++++++++ .../client/model/HexRobesModels.java | 70 -------- .../hexcasting/common/impl/HexAPIImpl.java | 3 +- .../common/items/armor/ItemRobes.java | 13 ++ .../hexcasting/common/lib/HexItems.java | 6 + .../forge/ForgeHexClientInitializer.java | 32 ++++ 7 files changed, 206 insertions(+), 72 deletions(-) create mode 100644 Common/src/main/java/at/petrak/hexcasting/client/model/HexRobesModel.java delete mode 100644 Common/src/main/java/at/petrak/hexcasting/client/model/HexRobesModels.java diff --git a/Common/src/main/java/at/petrak/hexcasting/client/model/HexModelLayers.java b/Common/src/main/java/at/petrak/hexcasting/client/model/HexModelLayers.java index 11dc412327..d220649bce 100644 --- a/Common/src/main/java/at/petrak/hexcasting/client/model/HexModelLayers.java +++ b/Common/src/main/java/at/petrak/hexcasting/client/model/HexModelLayers.java @@ -29,6 +29,6 @@ private static ModelLayerLocation make(String name, String layer) { // https://github.com/VazkiiMods/Botania/blob/1.19.x/Xplat/src/main/java/vazkii/botania/client/model/BotaniaLayerDefinitions.java public static void init(BiConsumer> consumer) { consumer.accept(ALTIORA, ElytraModel::createLayer); - consumer.accept(ROBES, HexRobesModels::variant1); + consumer.accept(ROBES, HexRobesModel::variant1); } } diff --git a/Common/src/main/java/at/petrak/hexcasting/client/model/HexRobesModel.java b/Common/src/main/java/at/petrak/hexcasting/client/model/HexRobesModel.java new file mode 100644 index 0000000000..9f3f1910e5 --- /dev/null +++ b/Common/src/main/java/at/petrak/hexcasting/client/model/HexRobesModel.java @@ -0,0 +1,152 @@ +package at.petrak.hexcasting.client.model; + +// Made with Blockbench 4.6.1 +// Exported for Minecraft version 1.17 or later with Mojang mappings +// Paste this class into your mod and generate all required imports + +import at.petrak.hexcasting.api.HexAPI; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import net.minecraft.client.model.HumanoidArmorModel; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.builders.*; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.entity.LivingEntity; + +public class HexRobesModel extends HumanoidArmorModel { + // This layer location should be baked with EntityRendererProvider.Context in the entity renderer and passed into + // this model's constructor + // public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(modLoc("robes"), "main"); + + final EquipmentSlot slot; + + public final ModelPart head; + public final ModelPart body; + public final ModelPart rightArm; + public final ModelPart leftArm; + public final ModelPart rightLeg; + public final ModelPart leftLeg; + + public HexRobesModel(ModelPart root, EquipmentSlot slot) { + super(root); + this.slot = slot; + + this.head = root.getChild("head"); + this.body = root.getChild("body"); + this.rightArm = root.getChild("right_arm"); + this.leftArm = root.getChild("left_arm"); + this.rightLeg = root.getChild("right_leg"); + this.leftLeg = root.getChild("left_leg"); + } + + public static LayerDefinition variant1() { + MeshDefinition meshdef = new MeshDefinition(); + PartDefinition root = meshdef.getRoot(); + + root.addOrReplaceChild("hat", CubeListBuilder.create(), PartPose.ZERO); + + var head = root.addOrReplaceChild("head", CubeListBuilder.create(), PartPose.ZERO); + + head.addOrReplaceChild("Hood", + CubeListBuilder.create() + .texOffs(0, 0).addBox(-8.0F, 0.0F, 0.0F, 8.0F, 8.0F, 8.0F, new CubeDeformation(0.0F)) + .texOffs(0, 16).addBox(-8.0F, 0.0F, 0.0F, 8.0F, 8.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offset(4.0F, -8.0F, -4.0F)); + + head.addOrReplaceChild("Horns", + CubeListBuilder.create() + .texOffs(24, 0).addBox(-8.0F, 0.0F, 0.0F, 8.0F, 4.0F, 0.0F, new CubeDeformation(0.0F)) + .texOffs(24, 0).mirror().addBox(9.5F, 0.0F, 0.0F, 8.0F, 4.0F, 0.0F, new CubeDeformation(0.0F)) + .mirror(false), + PartPose.offset(-4.8F, -8.2F, 0.0F)); + + var body = root.addOrReplaceChild("body", CubeListBuilder.create(), PartPose.ZERO); + + body.addOrReplaceChild("Torso", + CubeListBuilder.create() + .texOffs(40, 0).addBox(-8.0F, 0.0F, 0.0F, 8.0F, 12.0F, 4.0F, new CubeDeformation(0.0F)) + .texOffs(40, 16).addBox(-8.0F, 0.0F, 0.0F, 8.0F, 12.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offset(4.0F, 0.0F, -2.0F)); + + var rightArm = root.addOrReplaceChild("right_arm", CubeListBuilder.create(), PartPose.ZERO); + + rightArm.addOrReplaceChild("Arms", + CubeListBuilder.create() + .texOffs(0, 32).addBox(-4.0F, 0.0F, 0.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.0F)) + .texOffs(0, 32).mirror().addBox(8.0F, 0.0F, 0.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.0F)) + .mirror(false), + PartPose.offset(-4.0F, 0.0F, -2.0F)); + + var leftArm = root.addOrReplaceChild("left_arm", CubeListBuilder.create(), PartPose.ZERO); + + // TODO: split up arms? + + PartDefinition Skirt = body.addOrReplaceChild("Skirt", CubeListBuilder.create(), + PartPose.offset(0.0F, 12.0F, -2.0F)); + + PartDefinition Left_r1 = Skirt.addOrReplaceChild("Left_r1", + CubeListBuilder.create() + .texOffs(48, 32).mirror().addBox(0.1F, 0.0F, -4.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.0F)) + .mirror(false), + PartPose.offsetAndRotation(0.0F, 0.0F, 4.0F, 0.0F, 0.0F, -0.1309F)); + + PartDefinition Right_r1 = Skirt.addOrReplaceChild("Right_r1", + CubeListBuilder.create() + .texOffs(48, 32).addBox(-4.0F, 0.0F, -4.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 4.0F, 0.0F, 0.0F, 0.1309F)); + + var rightLeg = root.addOrReplaceChild("right_leg", CubeListBuilder.create(), PartPose.ZERO); + + rightLeg.addOrReplaceChild("Legs", + CubeListBuilder.create().texOffs(16, 41) + .addBox(-4.0F, 0.0F, 0.0F, 4.0F, 3.0F, 4.0F, new CubeDeformation(0.0F)) + .texOffs(16, 41).addBox(0.0F, 0.0F, 0.0F, 4.0F, 3.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offset(0.0F, 21.0F, -2.0F)); + + var leftLeg = root.addOrReplaceChild("left_leg", CubeListBuilder.create(), PartPose.ZERO); + + // TODO: split up legs? + + return LayerDefinition.create(meshdef, 64, 64); + } + + @Override + public void renderToBuffer(PoseStack ms, VertexConsumer buffer, int light, int overlay, int color) { + renderArmorPart(slot); + super.renderToBuffer(ms, buffer, light, overlay, color); + } + + private void renderArmorPart(EquipmentSlot slot) { + setAllVisible(false); + rightLeg.getChild("Legs").visible = false; + body.getChild("Skirt").visible = false; + //leftLeg.getChild("left_leg_armor").visible = false; + //rightLeg.getChild("right_boot").visible = false; + //leftLeg.getChild("left_boot").visible = false; + + switch (slot) { + case HEAD -> head.visible = true; + case CHEST -> { + body.visible = true; + rightArm.visible = true; + leftArm.visible = true; + } + case LEGS -> { + rightLeg.visible = true; + leftLeg.visible = true; + rightLeg.getChild("Legs").visible = true; + //leftLeg.getChild("left_leg_armor").visible = true; + body.getChild("Skirt").visible = true; + } + case FEET -> { + rightLeg.visible = true; + leftLeg.visible = true; + //rightLeg.getChild("right_boot").visible = true; + //leftLeg.getChild("left_boot").visible = true; + } + case MAINHAND, OFFHAND -> { + } + } + } +} \ No newline at end of file diff --git a/Common/src/main/java/at/petrak/hexcasting/client/model/HexRobesModels.java b/Common/src/main/java/at/petrak/hexcasting/client/model/HexRobesModels.java deleted file mode 100644 index 7f35494cab..0000000000 --- a/Common/src/main/java/at/petrak/hexcasting/client/model/HexRobesModels.java +++ /dev/null @@ -1,70 +0,0 @@ -package at.petrak.hexcasting.client.model; - -// Made with Blockbench 4.6.1 -// Exported for Minecraft version 1.17 or later with Mojang mappings -// Paste this class into your mod and generate all required imports - -import net.minecraft.client.model.geom.ModelLayerLocation; -import net.minecraft.client.model.geom.PartPose; -import net.minecraft.client.model.geom.builders.*; - -import static at.petrak.hexcasting.api.HexAPI.modLoc; - -public class HexRobesModels { - // This layer location should be baked with EntityRendererProvider.Context in the entity renderer and passed into - // this model's constructor - public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(modLoc("robes"), "main"); - - public static LayerDefinition variant1() { - MeshDefinition meshdefinition = new MeshDefinition(); - PartDefinition partdefinition = meshdefinition.getRoot(); - - PartDefinition Hood = partdefinition.addOrReplaceChild("Hood", - CubeListBuilder.create() - .texOffs(0, 0).addBox(-8.0F, 0.0F, 0.0F, 8.0F, 8.0F, 8.0F, new CubeDeformation(0.0F)) - .texOffs(0, 16).addBox(-8.0F, 0.0F, 0.0F, 8.0F, 8.0F, 8.0F, new CubeDeformation(0.0F)), - PartPose.offset(4.0F, -8.0F, -4.0F)); - - PartDefinition Horns = partdefinition.addOrReplaceChild("Horns", - CubeListBuilder.create() - .texOffs(24, 0).addBox(-8.0F, 0.0F, 0.0F, 8.0F, 4.0F, 0.0F, new CubeDeformation(0.0F)) - .texOffs(24, 0).mirror().addBox(9.5F, 0.0F, 0.0F, 8.0F, 4.0F, 0.0F, new CubeDeformation(0.0F)) - .mirror(false), - PartPose.offset(-4.8F, -8.2F, 0.0F)); - - PartDefinition Torso = partdefinition.addOrReplaceChild("Torso", - CubeListBuilder.create() - .texOffs(40, 0).addBox(-8.0F, 0.0F, 0.0F, 8.0F, 12.0F, 4.0F, new CubeDeformation(0.0F)) - .texOffs(40, 16).addBox(-8.0F, 0.0F, 0.0F, 8.0F, 12.0F, 4.0F, new CubeDeformation(0.0F)), - PartPose.offset(4.0F, 0.0F, -2.0F)); - - PartDefinition Arms = partdefinition.addOrReplaceChild("Arms", - CubeListBuilder.create() - .texOffs(0, 32).addBox(-4.0F, 0.0F, 0.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.0F)) - .texOffs(0, 32).mirror().addBox(8.0F, 0.0F, 0.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.0F)) - .mirror(false), - PartPose.offset(-4.0F, 0.0F, -2.0F)); - - PartDefinition Skirt = partdefinition.addOrReplaceChild("Skirt", CubeListBuilder.create(), - PartPose.offset(0.0F, 12.0F, -2.0F)); - - PartDefinition Left_r1 = Skirt.addOrReplaceChild("Left_r1", - CubeListBuilder.create() - .texOffs(48, 32).mirror().addBox(0.1F, 0.0F, -4.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.0F)) - .mirror(false), - PartPose.offsetAndRotation(0.0F, 0.0F, 4.0F, 0.0F, 0.0F, -0.1309F)); - - PartDefinition Right_r1 = Skirt.addOrReplaceChild("Right_r1", - CubeListBuilder.create() - .texOffs(48, 32).addBox(-4.0F, 0.0F, -4.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.0F)), - PartPose.offsetAndRotation(0.0F, 0.0F, 4.0F, 0.0F, 0.0F, 0.1309F)); - - PartDefinition Legs = partdefinition.addOrReplaceChild("Legs", - CubeListBuilder.create().texOffs(16, 41) - .addBox(-4.0F, 0.0F, 0.0F, 4.0F, 3.0F, 4.0F, new CubeDeformation(0.0F)) - .texOffs(16, 41).addBox(0.0F, 0.0F, 0.0F, 4.0F, 3.0F, 4.0F, new CubeDeformation(0.0F)), - PartPose.offset(0.0F, 21.0F, -2.0F)); - - return LayerDefinition.create(meshdefinition, 64, 64); - } -} \ No newline at end of file diff --git a/Common/src/main/java/at/petrak/hexcasting/common/impl/HexAPIImpl.java b/Common/src/main/java/at/petrak/hexcasting/common/impl/HexAPIImpl.java index 471e5861bd..ccab5c3c8b 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/impl/HexAPIImpl.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/impl/HexAPIImpl.java @@ -22,6 +22,7 @@ import org.jetbrains.annotations.Nullable; import java.util.Collections; +import java.util.List; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; import java.util.function.Consumer; @@ -117,7 +118,7 @@ public FrozenPigment getColorizer(Player player) { 0, SoundEvents.ARMOR_EQUIP_LEATHER, () -> Ingredient.EMPTY, - Collections.emptyList(), // TODO check textures. If not - use robes here from original code + List.of(new ArmorMaterial.Layer(HexAPI.modLoc("robes"))), 0, 0 ); diff --git a/Common/src/main/java/at/petrak/hexcasting/common/items/armor/ItemRobes.java b/Common/src/main/java/at/petrak/hexcasting/common/items/armor/ItemRobes.java index fbe194e85f..ff4d7f82c3 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/items/armor/ItemRobes.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/items/armor/ItemRobes.java @@ -1,8 +1,15 @@ package at.petrak.hexcasting.common.items.armor; +import at.petrak.hexcasting.annotations.SoftImplement; import at.petrak.hexcasting.api.HexAPI; import net.minecraft.core.Holder; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ArmorItem; +import net.minecraft.world.item.ArmorMaterial; +import net.minecraft.world.item.ItemStack; /** * To get the armor model in; @@ -16,4 +23,10 @@ public ItemRobes(ArmorItem.Type type, Properties properties) { super(Holder.direct(HexAPI.instance().robesMaterial()), type, properties); this.type = type; } + + @SoftImplement("IItemExtension") + public ResourceLocation getArmorTexture(ItemStack stack, Entity entity, EquipmentSlot slot, ArmorMaterial.Layer layer, boolean innerModel) { + // TODO: detect variant based on itemstack data + return HexAPI.modLoc("textures/armor/robes1.png"); + } } diff --git a/Common/src/main/java/at/petrak/hexcasting/common/lib/HexItems.java b/Common/src/main/java/at/petrak/hexcasting/common/lib/HexItems.java index e54537b9c7..ce0cce4186 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/lib/HexItems.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/lib/HexItems.java @@ -8,6 +8,7 @@ import at.petrak.hexcasting.common.items.ItemLens; import at.petrak.hexcasting.common.items.ItemLoreFragment; import at.petrak.hexcasting.common.items.ItemStaff; +import at.petrak.hexcasting.common.items.armor.ItemRobes; import at.petrak.hexcasting.common.items.magic.*; import at.petrak.hexcasting.common.items.pigment.*; import at.petrak.hexcasting.common.items.storage.*; @@ -75,6 +76,11 @@ public static void registerItemsForCreativeTab(ResourceKey tabK IXplatAbstractions.INSTANCE.addEquipSlotFabric(EquipmentSlot.HEAD) .stacksTo(1).attributes(ItemLens.MODIFIERS))); + public static final Supplier ROBE_MASK = make("robe/mask", () -> new ItemRobes(ArmorItem.Type.HELMET, unstackable())); + public static final Supplier ROBE_TUNIC = make("robe/tunic", () -> new ItemRobes(ArmorItem.Type.CHESTPLATE, unstackable())); + public static final Supplier ROBE_LEGS = make("robe/legs", () -> new ItemRobes(ArmorItem.Type.LEGGINGS, unstackable())); + public static final Supplier ROBE_BOOTS = make("robe/boots", () -> new ItemRobes(ArmorItem.Type.BOOTS, unstackable())); + public static final Supplier ABACUS = make("abacus", () -> new ItemAbacus(unstackable())); public static final Supplier THOUGHT_KNOT = make("thought_knot", () -> new ItemThoughtKnot(unstackable())); public static final Supplier FOCUS = make("focus", () -> new ItemFocus(unstackable())); diff --git a/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexClientInitializer.java b/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexClientInitializer.java index 3e30a6c875..a6d55e38f8 100644 --- a/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexClientInitializer.java +++ b/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexClientInitializer.java @@ -1,5 +1,6 @@ package at.petrak.hexcasting.forge; +import at.petrak.hexcasting.api.HexAPI; import at.petrak.hexcasting.client.ClientTickCounter; import at.petrak.hexcasting.client.Keybinds; import at.petrak.hexcasting.client.RegisterClientStuff; @@ -7,17 +8,23 @@ import at.petrak.hexcasting.client.gui.PatternTooltipComponent; import at.petrak.hexcasting.client.model.AltioraLayer; import at.petrak.hexcasting.client.model.HexModelLayers; +import at.petrak.hexcasting.client.model.HexRobesModel; import at.petrak.hexcasting.client.render.HexAdditionalRenderers; import at.petrak.hexcasting.client.render.shader.HexShaders; import at.petrak.hexcasting.common.casting.PatternRegistryManifest; +import at.petrak.hexcasting.common.lib.HexItems; import at.petrak.hexcasting.common.lib.HexParticles; import at.petrak.hexcasting.common.misc.PatternTooltip; import at.petrak.hexcasting.forge.lib.ForgeHexAttachments; import at.petrak.hexcasting.interop.HexInterop; +import it.unimi.dsi.fastutil.objects.Object2ObjectArrayMap; import net.minecraft.client.Minecraft; import net.minecraft.client.color.block.BlockColors; import net.minecraft.client.color.item.ItemColors; +import net.minecraft.client.model.HumanoidModel; import net.minecraft.client.model.PlayerModel; +import net.minecraft.client.model.geom.EntityModelSet; +import net.minecraft.client.model.geom.ModelPart; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.particle.ParticleProvider; import net.minecraft.client.particle.SpriteSet; @@ -25,13 +32,20 @@ import net.minecraft.client.renderer.entity.LivingEntityRenderer; import net.minecraft.core.particles.ParticleOptions; import net.minecraft.core.particles.ParticleType; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; import net.neoforged.bus.api.SubscribeEvent; import net.neoforged.fml.event.lifecycle.FMLClientSetupEvent; +import net.neoforged.neoforge.client.ClientHooks; import net.neoforged.neoforge.client.event.*; +import net.neoforged.neoforge.client.extensions.common.IClientItemExtensions; +import net.neoforged.neoforge.client.extensions.common.RegisterClientExtensionsEvent; import net.neoforged.neoforge.common.NeoForge; import java.io.IOException; +import java.util.Map; import java.util.function.Function; // This is Java because I can't kotlin-fu some of the consumers @@ -147,6 +161,24 @@ public static void addPlayerLayers(EntityRenderersEvent.AddLayers evt) { }); } + @SubscribeEvent + public static void registerArmorRenderer(RegisterClientExtensionsEvent evt) { + evt.registerItem(new IClientItemExtensions() { + private final Map> MODELS = new Object2ObjectArrayMap<>(); + + @Override + public HumanoidModel getHumanoidArmorModel(LivingEntity livingEntity, ItemStack itemStack, EquipmentSlot equipmentSlot, HumanoidModel original) { + return MODELS.computeIfAbsent(equipmentSlot, this::provideArmorModelForSlot); + } + + private HumanoidModel provideArmorModelForSlot(EquipmentSlot slot) { + EntityModelSet models = Minecraft.getInstance().getEntityModels(); + ModelPart root = models.bakeLayer(HexModelLayers.ROBES); + return new HexRobesModel(root, slot); + } + }, HexItems.ROBE_MASK.get(), HexItems.ROBE_TUNIC.get(), HexItems.ROBE_LEGS.get(), HexItems.ROBE_BOOTS.get()); + } + @SubscribeEvent public static void registerBinds(RegisterKeyMappingsEvent event) { Keybinds.ALL_BINDS.forEach(event::register); From e35f605949a2a4d31ba0c1196e11ca67786eb9ce Mon Sep 17 00:00:00 2001 From: Robotgiggle <88736742+Robotgiggle@users.noreply.github.com> Date: Mon, 24 Aug 2026 15:59:52 -0400 Subject: [PATCH 02/14] Equivalent setup for fabric --- .../common/items/armor/ItemRobes.java | 21 ++++++++++++ .../fabric/FabricHexClientInitializer.kt | 3 +- .../fabric/client/HexRobesRenderer.java | 33 +++++++++++++++++++ .../forge/ForgeHexClientInitializer.java | 9 ++--- 4 files changed, 58 insertions(+), 8 deletions(-) create mode 100644 Fabric/src/main/java/at/petrak/hexcasting/fabric/client/HexRobesRenderer.java diff --git a/Common/src/main/java/at/petrak/hexcasting/common/items/armor/ItemRobes.java b/Common/src/main/java/at/petrak/hexcasting/common/items/armor/ItemRobes.java index ff4d7f82c3..ad8e020d75 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/items/armor/ItemRobes.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/items/armor/ItemRobes.java @@ -2,14 +2,22 @@ import at.petrak.hexcasting.annotations.SoftImplement; import at.petrak.hexcasting.api.HexAPI; +import at.petrak.hexcasting.client.model.HexModelLayers; +import at.petrak.hexcasting.client.model.HexRobesModel; +import net.minecraft.client.Minecraft; +import net.minecraft.client.model.HumanoidModel; +import net.minecraft.client.model.geom.EntityModelSet; +import net.minecraft.client.model.geom.ModelPart; import net.minecraft.core.Holder; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ArmorItem; import net.minecraft.world.item.ArmorMaterial; import net.minecraft.world.item.ItemStack; +import org.jetbrains.annotations.Nullable; /** * To get the armor model in; @@ -18,12 +26,25 @@ */ public class ItemRobes extends ArmorItem { public final ArmorItem.Type type; + private @Nullable HexRobesModel model; public ItemRobes(ArmorItem.Type type, Properties properties) { super(Holder.direct(HexAPI.instance().robesMaterial()), type, properties); this.type = type; } + // TODO: return a collection holding all the variants for the given slot + public static HexRobesModel provideArmorModelForSlot(EquipmentSlot slot) { + EntityModelSet models = Minecraft.getInstance().getEntityModels(); + ModelPart root = models.bakeLayer(HexModelLayers.ROBES); + return new HexRobesModel(root, slot); + } + + public HexRobesModel getArmorModel() { + if (model == null) model = provideArmorModelForSlot(getEquipmentSlot()); + return model; + } + @SoftImplement("IItemExtension") public ResourceLocation getArmorTexture(ItemStack stack, Entity entity, EquipmentSlot slot, ArmorMaterial.Layer layer, boolean innerModel) { // TODO: detect variant based on itemstack data diff --git a/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexClientInitializer.kt b/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexClientInitializer.kt index 76130ce49a..6ad22c56f1 100644 --- a/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexClientInitializer.kt +++ b/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexClientInitializer.kt @@ -9,6 +9,7 @@ import at.petrak.hexcasting.client.model.HexModelLayers import at.petrak.hexcasting.client.render.HexAdditionalRenderers import at.petrak.hexcasting.common.casting.PatternRegistryManifest import at.petrak.hexcasting.common.lib.HexParticles +import at.petrak.hexcasting.fabric.client.HexRobesRenderer import at.petrak.hexcasting.fabric.event.MouseScrollCallback import at.petrak.hexcasting.fabric.network.FabricPacketHandler import at.petrak.hexcasting.interop.HexInterop @@ -56,7 +57,7 @@ object FabricHexClientInitializer : ClientModInitializer { RegisterClientStuff.init() HexModelLayers.init { loc, defn -> EntityModelLayerRegistry.registerModelLayer(loc, defn::get) } - + HexRobesRenderer.init() HexParticles.FactoryHandler.registerFactories(object : HexParticles.FactoryHandler.Consumer { override fun register(type: ParticleType, constructor: Function>) { diff --git a/Fabric/src/main/java/at/petrak/hexcasting/fabric/client/HexRobesRenderer.java b/Fabric/src/main/java/at/petrak/hexcasting/fabric/client/HexRobesRenderer.java new file mode 100644 index 0000000000..b61c06e098 --- /dev/null +++ b/Fabric/src/main/java/at/petrak/hexcasting/fabric/client/HexRobesRenderer.java @@ -0,0 +1,33 @@ +package at.petrak.hexcasting.fabric.client; + +import at.petrak.hexcasting.api.HexAPI; +import at.petrak.hexcasting.common.items.armor.ItemRobes; +import at.petrak.hexcasting.common.lib.HexItems; +import net.fabricmc.fabric.api.client.rendering.v1.ArmorRenderer; +import net.minecraft.world.item.Item; + +import java.util.List; + +public class HexRobesRenderer { + public static final List ROBE_ITEMS = + List.of( + HexItems.ROBE_MASK.get(), + HexItems.ROBE_TUNIC.get(), + HexItems.ROBE_LEGS.get(), + HexItems.ROBE_BOOTS.get() + ); + + public static void init() { + ArmorRenderer renderer = (matrices, vertexConsumers, stack, entity, slot, light, contextModel) -> { + + ItemRobes armor = (ItemRobes) stack.getItem(); + var model = armor.getArmorModel(); + var texture = armor.getArmorTexture(stack, entity, slot, HexAPI.instance().robesMaterial().layers().getFirst(), false); + contextModel.copyPropertiesTo(model); + + ArmorRenderer.renderPart(matrices, vertexConsumers, light, stack, model, texture); + + }; + ArmorRenderer.register(renderer, ROBE_ITEMS.toArray(new Item[0])); + } +} diff --git a/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexClientInitializer.java b/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexClientInitializer.java index a6d55e38f8..46acccab05 100644 --- a/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexClientInitializer.java +++ b/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexClientInitializer.java @@ -12,6 +12,7 @@ import at.petrak.hexcasting.client.render.HexAdditionalRenderers; import at.petrak.hexcasting.client.render.shader.HexShaders; import at.petrak.hexcasting.common.casting.PatternRegistryManifest; +import at.petrak.hexcasting.common.items.armor.ItemRobes; import at.petrak.hexcasting.common.lib.HexItems; import at.petrak.hexcasting.common.lib.HexParticles; import at.petrak.hexcasting.common.misc.PatternTooltip; @@ -168,13 +169,7 @@ public static void registerArmorRenderer(RegisterClientExtensionsEvent evt) { @Override public HumanoidModel getHumanoidArmorModel(LivingEntity livingEntity, ItemStack itemStack, EquipmentSlot equipmentSlot, HumanoidModel original) { - return MODELS.computeIfAbsent(equipmentSlot, this::provideArmorModelForSlot); - } - - private HumanoidModel provideArmorModelForSlot(EquipmentSlot slot) { - EntityModelSet models = Minecraft.getInstance().getEntityModels(); - ModelPart root = models.bakeLayer(HexModelLayers.ROBES); - return new HexRobesModel(root, slot); + return MODELS.computeIfAbsent(equipmentSlot, ItemRobes::provideArmorModelForSlot); } }, HexItems.ROBE_MASK.get(), HexItems.ROBE_TUNIC.get(), HexItems.ROBE_LEGS.get(), HexItems.ROBE_BOOTS.get()); } From 0cdc94860ef2115d46a874e188530c72b2fadd6f Mon Sep 17 00:00:00 2001 From: Robotgiggle <88736742+Robotgiggle@users.noreply.github.com> Date: Mon, 24 Aug 2026 16:42:15 -0400 Subject: [PATCH 03/14] Manually tweak robe models to align properly --- .../client/model/HexRobesModel.java | 69 +++++++++---------- 1 file changed, 34 insertions(+), 35 deletions(-) diff --git a/Common/src/main/java/at/petrak/hexcasting/client/model/HexRobesModel.java b/Common/src/main/java/at/petrak/hexcasting/client/model/HexRobesModel.java index 9f3f1910e5..7a79fcb8fa 100644 --- a/Common/src/main/java/at/petrak/hexcasting/client/model/HexRobesModel.java +++ b/Common/src/main/java/at/petrak/hexcasting/client/model/HexRobesModel.java @@ -56,8 +56,8 @@ public static LayerDefinition variant1() { head.addOrReplaceChild("Horns", CubeListBuilder.create() - .texOffs(24, 0).addBox(-8.0F, 0.0F, 0.0F, 8.0F, 4.0F, 0.0F, new CubeDeformation(0.0F)) - .texOffs(24, 0).mirror().addBox(9.5F, 0.0F, 0.0F, 8.0F, 4.0F, 0.0F, new CubeDeformation(0.0F)) + .texOffs(24, 0).addBox(8.5F, 0.0F, 0.0F, 8.0F, 4.0F, 0.0F, new CubeDeformation(0.0F)) + .texOffs(24, 0).mirror().addBox(-7F, 0.0F, 0.0F, 8.0F, 4.0F, 0.0F, new CubeDeformation(0.0F)) .mirror(false), PartPose.offset(-4.8F, -8.2F, 0.0F)); @@ -71,42 +71,43 @@ public static LayerDefinition variant1() { var rightArm = root.addOrReplaceChild("right_arm", CubeListBuilder.create(), PartPose.ZERO); - rightArm.addOrReplaceChild("Arms", + rightArm.addOrReplaceChild("right_sleeve", CubeListBuilder.create() - .texOffs(0, 32).addBox(-4.0F, 0.0F, 0.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.0F)) - .texOffs(0, 32).mirror().addBox(8.0F, 0.0F, 0.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.0F)) - .mirror(false), - PartPose.offset(-4.0F, 0.0F, -2.0F)); + .texOffs(0, 32).addBox(0.0F, 0.0F, 0.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offset(-3.0F, -2.0F, -2.0F)); var leftArm = root.addOrReplaceChild("left_arm", CubeListBuilder.create(), PartPose.ZERO); - // TODO: split up arms? - - PartDefinition Skirt = body.addOrReplaceChild("Skirt", CubeListBuilder.create(), - PartPose.offset(0.0F, 12.0F, -2.0F)); - - PartDefinition Left_r1 = Skirt.addOrReplaceChild("Left_r1", + leftArm.addOrReplaceChild("left_sleeve", CubeListBuilder.create() - .texOffs(48, 32).mirror().addBox(0.1F, 0.0F, -4.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.0F)) + .texOffs(0, 32).mirror().addBox(0, 0.0F, 0.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.0F)) .mirror(false), - PartPose.offsetAndRotation(0.0F, 0.0F, 4.0F, 0.0F, 0.0F, -0.1309F)); + PartPose.offset(-1.0F, -2.0F, -2.0F)); - PartDefinition Right_r1 = Skirt.addOrReplaceChild("Right_r1", + var rightLeg = root.addOrReplaceChild("right_leg", CubeListBuilder.create(), PartPose.ZERO); + + PartDefinition Right_r1 = rightLeg.addOrReplaceChild("right_skirt", CubeListBuilder.create() - .texOffs(48, 32).addBox(-4.0F, 0.0F, -4.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.0F)), + .texOffs(48, 32).mirror().addBox(-2.2F, -0.5F, -6.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.0F)) + .mirror(false), PartPose.offsetAndRotation(0.0F, 0.0F, 4.0F, 0.0F, 0.0F, 0.1309F)); - var rightLeg = root.addOrReplaceChild("right_leg", CubeListBuilder.create(), PartPose.ZERO); - - rightLeg.addOrReplaceChild("Legs", - CubeListBuilder.create().texOffs(16, 41) - .addBox(-4.0F, 0.0F, 0.0F, 4.0F, 3.0F, 4.0F, new CubeDeformation(0.0F)) - .texOffs(16, 41).addBox(0.0F, 0.0F, 0.0F, 4.0F, 3.0F, 4.0F, new CubeDeformation(0.0F)), - PartPose.offset(0.0F, 21.0F, -2.0F)); + rightLeg.addOrReplaceChild("right_boot", + CubeListBuilder.create() + .texOffs(16, 41).addBox(-4.0F, 0.0F, 0.0F, 4.0F, 3.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offset(2.0F, 9.0F, -2.0F)); var leftLeg = root.addOrReplaceChild("left_leg", CubeListBuilder.create(), PartPose.ZERO); - // TODO: split up legs? + PartDefinition Left_r1 = leftLeg.addOrReplaceChild("left_skirt", + CubeListBuilder.create() + .texOffs(48, 32).addBox(-1.8F, -0.5F, -6.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 4.0F, 0.0F, 0.0F, -0.1309F)); + + leftLeg.addOrReplaceChild("left_boot", + CubeListBuilder.create() + .texOffs(16, 41).addBox(0.0F, 0.0F, 0.0F, 4.0F, 3.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offset(-2.0F, 9.0F, -2.0F)); return LayerDefinition.create(meshdef, 64, 64); } @@ -119,11 +120,10 @@ public void renderToBuffer(PoseStack ms, VertexConsumer buffer, int light, int o private void renderArmorPart(EquipmentSlot slot) { setAllVisible(false); - rightLeg.getChild("Legs").visible = false; - body.getChild("Skirt").visible = false; - //leftLeg.getChild("left_leg_armor").visible = false; - //rightLeg.getChild("right_boot").visible = false; - //leftLeg.getChild("left_boot").visible = false; + rightLeg.getChild("right_skirt").visible = false; + leftLeg.getChild("left_skirt").visible = false; + rightLeg.getChild("right_boot").visible = false; + leftLeg.getChild("left_boot").visible = false; switch (slot) { case HEAD -> head.visible = true; @@ -135,15 +135,14 @@ private void renderArmorPart(EquipmentSlot slot) { case LEGS -> { rightLeg.visible = true; leftLeg.visible = true; - rightLeg.getChild("Legs").visible = true; - //leftLeg.getChild("left_leg_armor").visible = true; - body.getChild("Skirt").visible = true; + rightLeg.getChild("right_skirt").visible = true; + leftLeg.getChild("left_skirt").visible = true; } case FEET -> { rightLeg.visible = true; leftLeg.visible = true; - //rightLeg.getChild("right_boot").visible = true; - //leftLeg.getChild("left_boot").visible = true; + rightLeg.getChild("right_boot").visible = true; + leftLeg.getChild("left_boot").visible = true; } case MAINHAND, OFFHAND -> { } From 80523fed059c3746be0fe493f7691b8d1c2ef049 Mon Sep 17 00:00:00 2001 From: Robotgiggle <88736742+Robotgiggle@users.noreply.github.com> Date: Mon, 24 Aug 2026 16:59:34 -0400 Subject: [PATCH 04/14] Inflate model so it doesn't overlap skin details --- .../client/model/HexRobesModel.java | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/Common/src/main/java/at/petrak/hexcasting/client/model/HexRobesModel.java b/Common/src/main/java/at/petrak/hexcasting/client/model/HexRobesModel.java index 7a79fcb8fa..3453b3c82d 100644 --- a/Common/src/main/java/at/petrak/hexcasting/client/model/HexRobesModel.java +++ b/Common/src/main/java/at/petrak/hexcasting/client/model/HexRobesModel.java @@ -50,14 +50,14 @@ public static LayerDefinition variant1() { head.addOrReplaceChild("Hood", CubeListBuilder.create() - .texOffs(0, 0).addBox(-8.0F, 0.0F, 0.0F, 8.0F, 8.0F, 8.0F, new CubeDeformation(0.0F)) - .texOffs(0, 16).addBox(-8.0F, 0.0F, 0.0F, 8.0F, 8.0F, 8.0F, new CubeDeformation(0.0F)), + .texOffs(0, 0).addBox(-8.0F, 0.0F, 0.0F, 8.0F, 8.0F, 8.0F, new CubeDeformation(0.5F)) + .texOffs(0, 16).addBox(-8.0F, 0.0F, 0.0F, 8.0F, 8.0F, 8.0F, new CubeDeformation(0.5F)), PartPose.offset(4.0F, -8.0F, -4.0F)); head.addOrReplaceChild("Horns", CubeListBuilder.create() - .texOffs(24, 0).addBox(8.5F, 0.0F, 0.0F, 8.0F, 4.0F, 0.0F, new CubeDeformation(0.0F)) - .texOffs(24, 0).mirror().addBox(-7F, 0.0F, 0.0F, 8.0F, 4.0F, 0.0F, new CubeDeformation(0.0F)) + .texOffs(24, 0).addBox(8.5F, 0.0F, 0.0F, 8.0F, 4.0F, 0.0F, new CubeDeformation(0.5F)) + .texOffs(24, 0).mirror().addBox(-7F, 0.0F, 0.0F, 8.0F, 4.0F, 0.0F, new CubeDeformation(0.5F)) .mirror(false), PartPose.offset(-4.8F, -8.2F, 0.0F)); @@ -65,22 +65,22 @@ public static LayerDefinition variant1() { body.addOrReplaceChild("Torso", CubeListBuilder.create() - .texOffs(40, 0).addBox(-8.0F, 0.0F, 0.0F, 8.0F, 12.0F, 4.0F, new CubeDeformation(0.0F)) - .texOffs(40, 16).addBox(-8.0F, 0.0F, 0.0F, 8.0F, 12.0F, 4.0F, new CubeDeformation(0.0F)), + .texOffs(40, 0).addBox(-8.0F, 0.0F, 0.0F, 8.0F, 12.0F, 4.0F, new CubeDeformation(0.5F)) + .texOffs(40, 16).addBox(-8.0F, 0.0F, 0.0F, 8.0F, 12.0F, 4.0F, new CubeDeformation(0.5F)), PartPose.offset(4.0F, 0.0F, -2.0F)); var rightArm = root.addOrReplaceChild("right_arm", CubeListBuilder.create(), PartPose.ZERO); rightArm.addOrReplaceChild("right_sleeve", CubeListBuilder.create() - .texOffs(0, 32).addBox(0.0F, 0.0F, 0.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.0F)), + .texOffs(0, 32).addBox(0.0F, 0.0F, 0.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.5F)), PartPose.offset(-3.0F, -2.0F, -2.0F)); var leftArm = root.addOrReplaceChild("left_arm", CubeListBuilder.create(), PartPose.ZERO); leftArm.addOrReplaceChild("left_sleeve", CubeListBuilder.create() - .texOffs(0, 32).mirror().addBox(0, 0.0F, 0.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.0F)) + .texOffs(0, 32).mirror().addBox(0, 0.0F, 0.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.5F)) .mirror(false), PartPose.offset(-1.0F, -2.0F, -2.0F)); @@ -88,25 +88,25 @@ public static LayerDefinition variant1() { PartDefinition Right_r1 = rightLeg.addOrReplaceChild("right_skirt", CubeListBuilder.create() - .texOffs(48, 32).mirror().addBox(-2.2F, -0.5F, -6.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.0F)) + .texOffs(48, 32).mirror().addBox(-2.2F, -0.5F, -6.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.5F)) .mirror(false), PartPose.offsetAndRotation(0.0F, 0.0F, 4.0F, 0.0F, 0.0F, 0.1309F)); rightLeg.addOrReplaceChild("right_boot", CubeListBuilder.create() - .texOffs(16, 41).addBox(-4.0F, 0.0F, 0.0F, 4.0F, 3.0F, 4.0F, new CubeDeformation(0.0F)), + .texOffs(16, 41).addBox(-4.0F, 0.0F, 0.0F, 4.0F, 3.0F, 4.0F, new CubeDeformation(0.5F)), PartPose.offset(2.0F, 9.0F, -2.0F)); var leftLeg = root.addOrReplaceChild("left_leg", CubeListBuilder.create(), PartPose.ZERO); PartDefinition Left_r1 = leftLeg.addOrReplaceChild("left_skirt", CubeListBuilder.create() - .texOffs(48, 32).addBox(-1.8F, -0.5F, -6.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.0F)), + .texOffs(48, 32).addBox(-1.8F, -0.5F, -6.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.5F)), PartPose.offsetAndRotation(0.0F, 0.0F, 4.0F, 0.0F, 0.0F, -0.1309F)); leftLeg.addOrReplaceChild("left_boot", CubeListBuilder.create() - .texOffs(16, 41).addBox(0.0F, 0.0F, 0.0F, 4.0F, 3.0F, 4.0F, new CubeDeformation(0.0F)), + .texOffs(16, 41).addBox(0.0F, 0.0F, 0.0F, 4.0F, 3.0F, 4.0F, new CubeDeformation(0.5F)), PartPose.offset(-2.0F, 9.0F, -2.0F)); return LayerDefinition.create(meshdef, 64, 64); From 4eb7d42adcf8f729fdfae0a94e802e507a67c7b4 Mon Sep 17 00:00:00 2001 From: Robotgiggle <88736742+Robotgiggle@users.noreply.github.com> Date: Mon, 24 Aug 2026 17:29:32 -0400 Subject: [PATCH 05/14] Properly hook up the item textures --- .../assets/hexcasting/models/item/robes/boots.json | 6 ++++++ .../assets/hexcasting/models/item/robes/legs.json | 6 ++++++ .../assets/hexcasting/models/item/robes/mask.json | 6 ++++++ .../assets/hexcasting/models/item/robes/tunic.json | 6 ++++++ .../at/petrak/hexcasting/common/lib/HexItems.java | 8 ++++---- .../textures/item/robes/{1-boots.png => boots1.png} | Bin .../textures/item/robes/{2-boots.png => boots2.png} | Bin .../textures/item/robes/{3-boots.png => boots3.png} | Bin .../robes/{1-chestplate.png => chestplate1.png} | Bin .../robes/{2-chestplate.png => chestplate2.png} | Bin .../robes/{3-chestplate.png => chestplate3.png} | Bin .../item/robes/{1-helmet.png => helmet1.png} | Bin .../item/robes/{2-helmet.png => helmet2.png} | Bin .../item/robes/{3-helmet.png => helmet3.png} | Bin .../item/robes/{1-leggings.png => leggings1.png} | Bin .../item/robes/{2-leggings.png => leggings2.png} | Bin .../item/robes/{3-leggings.png => leggings3.png} | Bin .../hexcasting/fabric/client/HexRobesRenderer.java | 8 ++++---- .../assets/hexcasting/models/item/robes/boots.json | 6 ++++++ .../assets/hexcasting/models/item/robes/legs.json | 6 ++++++ .../assets/hexcasting/models/item/robes/mask.json | 6 ++++++ .../assets/hexcasting/models/item/robes/tunic.json | 6 ++++++ .../hexcasting/forge/ForgeHexClientInitializer.java | 7 +------ .../forge/datagen/xplat/HexItemModels.java | 11 +++++++++++ 24 files changed, 68 insertions(+), 14 deletions(-) create mode 100644 Common/src/generated/resources/assets/hexcasting/models/item/robes/boots.json create mode 100644 Common/src/generated/resources/assets/hexcasting/models/item/robes/legs.json create mode 100644 Common/src/generated/resources/assets/hexcasting/models/item/robes/mask.json create mode 100644 Common/src/generated/resources/assets/hexcasting/models/item/robes/tunic.json rename Common/src/main/resources/assets/hexcasting/textures/item/robes/{1-boots.png => boots1.png} (100%) rename Common/src/main/resources/assets/hexcasting/textures/item/robes/{2-boots.png => boots2.png} (100%) rename Common/src/main/resources/assets/hexcasting/textures/item/robes/{3-boots.png => boots3.png} (100%) rename Common/src/main/resources/assets/hexcasting/textures/item/robes/{1-chestplate.png => chestplate1.png} (100%) rename Common/src/main/resources/assets/hexcasting/textures/item/robes/{2-chestplate.png => chestplate2.png} (100%) rename Common/src/main/resources/assets/hexcasting/textures/item/robes/{3-chestplate.png => chestplate3.png} (100%) rename Common/src/main/resources/assets/hexcasting/textures/item/robes/{1-helmet.png => helmet1.png} (100%) rename Common/src/main/resources/assets/hexcasting/textures/item/robes/{2-helmet.png => helmet2.png} (100%) rename Common/src/main/resources/assets/hexcasting/textures/item/robes/{3-helmet.png => helmet3.png} (100%) rename Common/src/main/resources/assets/hexcasting/textures/item/robes/{1-leggings.png => leggings1.png} (100%) rename Common/src/main/resources/assets/hexcasting/textures/item/robes/{2-leggings.png => leggings2.png} (100%) rename Common/src/main/resources/assets/hexcasting/textures/item/robes/{3-leggings.png => leggings3.png} (100%) create mode 100644 Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/boots.json create mode 100644 Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/legs.json create mode 100644 Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/mask.json create mode 100644 Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/tunic.json diff --git a/Common/src/generated/resources/assets/hexcasting/models/item/robes/boots.json b/Common/src/generated/resources/assets/hexcasting/models/item/robes/boots.json new file mode 100644 index 0000000000..d872efd81d --- /dev/null +++ b/Common/src/generated/resources/assets/hexcasting/models/item/robes/boots.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "hexcasting:item/robes/boots1" + } +} \ No newline at end of file diff --git a/Common/src/generated/resources/assets/hexcasting/models/item/robes/legs.json b/Common/src/generated/resources/assets/hexcasting/models/item/robes/legs.json new file mode 100644 index 0000000000..fb41385983 --- /dev/null +++ b/Common/src/generated/resources/assets/hexcasting/models/item/robes/legs.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "hexcasting:item/robes/leggings1" + } +} \ No newline at end of file diff --git a/Common/src/generated/resources/assets/hexcasting/models/item/robes/mask.json b/Common/src/generated/resources/assets/hexcasting/models/item/robes/mask.json new file mode 100644 index 0000000000..4465daf8f4 --- /dev/null +++ b/Common/src/generated/resources/assets/hexcasting/models/item/robes/mask.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "hexcasting:item/robes/helmet1" + } +} \ No newline at end of file diff --git a/Common/src/generated/resources/assets/hexcasting/models/item/robes/tunic.json b/Common/src/generated/resources/assets/hexcasting/models/item/robes/tunic.json new file mode 100644 index 0000000000..4c9f5cb987 --- /dev/null +++ b/Common/src/generated/resources/assets/hexcasting/models/item/robes/tunic.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "hexcasting:item/robes/chestplate1" + } +} \ No newline at end of file diff --git a/Common/src/main/java/at/petrak/hexcasting/common/lib/HexItems.java b/Common/src/main/java/at/petrak/hexcasting/common/lib/HexItems.java index ce0cce4186..5009bdaa4c 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/lib/HexItems.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/lib/HexItems.java @@ -76,10 +76,10 @@ public static void registerItemsForCreativeTab(ResourceKey tabK IXplatAbstractions.INSTANCE.addEquipSlotFabric(EquipmentSlot.HEAD) .stacksTo(1).attributes(ItemLens.MODIFIERS))); - public static final Supplier ROBE_MASK = make("robe/mask", () -> new ItemRobes(ArmorItem.Type.HELMET, unstackable())); - public static final Supplier ROBE_TUNIC = make("robe/tunic", () -> new ItemRobes(ArmorItem.Type.CHESTPLATE, unstackable())); - public static final Supplier ROBE_LEGS = make("robe/legs", () -> new ItemRobes(ArmorItem.Type.LEGGINGS, unstackable())); - public static final Supplier ROBE_BOOTS = make("robe/boots", () -> new ItemRobes(ArmorItem.Type.BOOTS, unstackable())); + public static final Supplier ROBES_MASK = make("robes/mask", () -> new ItemRobes(ArmorItem.Type.HELMET, unstackable())); + public static final Supplier ROBES_TUNIC = make("robes/tunic", () -> new ItemRobes(ArmorItem.Type.CHESTPLATE, unstackable())); + public static final Supplier ROBES_LEGS = make("robes/legs", () -> new ItemRobes(ArmorItem.Type.LEGGINGS, unstackable())); + public static final Supplier ROBES_BOOTS = make("robes/boots", () -> new ItemRobes(ArmorItem.Type.BOOTS, unstackable())); public static final Supplier ABACUS = make("abacus", () -> new ItemAbacus(unstackable())); public static final Supplier THOUGHT_KNOT = make("thought_knot", () -> new ItemThoughtKnot(unstackable())); diff --git a/Common/src/main/resources/assets/hexcasting/textures/item/robes/1-boots.png b/Common/src/main/resources/assets/hexcasting/textures/item/robes/boots1.png similarity index 100% rename from Common/src/main/resources/assets/hexcasting/textures/item/robes/1-boots.png rename to Common/src/main/resources/assets/hexcasting/textures/item/robes/boots1.png diff --git a/Common/src/main/resources/assets/hexcasting/textures/item/robes/2-boots.png b/Common/src/main/resources/assets/hexcasting/textures/item/robes/boots2.png similarity index 100% rename from Common/src/main/resources/assets/hexcasting/textures/item/robes/2-boots.png rename to Common/src/main/resources/assets/hexcasting/textures/item/robes/boots2.png diff --git a/Common/src/main/resources/assets/hexcasting/textures/item/robes/3-boots.png b/Common/src/main/resources/assets/hexcasting/textures/item/robes/boots3.png similarity index 100% rename from Common/src/main/resources/assets/hexcasting/textures/item/robes/3-boots.png rename to Common/src/main/resources/assets/hexcasting/textures/item/robes/boots3.png diff --git a/Common/src/main/resources/assets/hexcasting/textures/item/robes/1-chestplate.png b/Common/src/main/resources/assets/hexcasting/textures/item/robes/chestplate1.png similarity index 100% rename from Common/src/main/resources/assets/hexcasting/textures/item/robes/1-chestplate.png rename to Common/src/main/resources/assets/hexcasting/textures/item/robes/chestplate1.png diff --git a/Common/src/main/resources/assets/hexcasting/textures/item/robes/2-chestplate.png b/Common/src/main/resources/assets/hexcasting/textures/item/robes/chestplate2.png similarity index 100% rename from Common/src/main/resources/assets/hexcasting/textures/item/robes/2-chestplate.png rename to Common/src/main/resources/assets/hexcasting/textures/item/robes/chestplate2.png diff --git a/Common/src/main/resources/assets/hexcasting/textures/item/robes/3-chestplate.png b/Common/src/main/resources/assets/hexcasting/textures/item/robes/chestplate3.png similarity index 100% rename from Common/src/main/resources/assets/hexcasting/textures/item/robes/3-chestplate.png rename to Common/src/main/resources/assets/hexcasting/textures/item/robes/chestplate3.png diff --git a/Common/src/main/resources/assets/hexcasting/textures/item/robes/1-helmet.png b/Common/src/main/resources/assets/hexcasting/textures/item/robes/helmet1.png similarity index 100% rename from Common/src/main/resources/assets/hexcasting/textures/item/robes/1-helmet.png rename to Common/src/main/resources/assets/hexcasting/textures/item/robes/helmet1.png diff --git a/Common/src/main/resources/assets/hexcasting/textures/item/robes/2-helmet.png b/Common/src/main/resources/assets/hexcasting/textures/item/robes/helmet2.png similarity index 100% rename from Common/src/main/resources/assets/hexcasting/textures/item/robes/2-helmet.png rename to Common/src/main/resources/assets/hexcasting/textures/item/robes/helmet2.png diff --git a/Common/src/main/resources/assets/hexcasting/textures/item/robes/3-helmet.png b/Common/src/main/resources/assets/hexcasting/textures/item/robes/helmet3.png similarity index 100% rename from Common/src/main/resources/assets/hexcasting/textures/item/robes/3-helmet.png rename to Common/src/main/resources/assets/hexcasting/textures/item/robes/helmet3.png diff --git a/Common/src/main/resources/assets/hexcasting/textures/item/robes/1-leggings.png b/Common/src/main/resources/assets/hexcasting/textures/item/robes/leggings1.png similarity index 100% rename from Common/src/main/resources/assets/hexcasting/textures/item/robes/1-leggings.png rename to Common/src/main/resources/assets/hexcasting/textures/item/robes/leggings1.png diff --git a/Common/src/main/resources/assets/hexcasting/textures/item/robes/2-leggings.png b/Common/src/main/resources/assets/hexcasting/textures/item/robes/leggings2.png similarity index 100% rename from Common/src/main/resources/assets/hexcasting/textures/item/robes/2-leggings.png rename to Common/src/main/resources/assets/hexcasting/textures/item/robes/leggings2.png diff --git a/Common/src/main/resources/assets/hexcasting/textures/item/robes/3-leggings.png b/Common/src/main/resources/assets/hexcasting/textures/item/robes/leggings3.png similarity index 100% rename from Common/src/main/resources/assets/hexcasting/textures/item/robes/3-leggings.png rename to Common/src/main/resources/assets/hexcasting/textures/item/robes/leggings3.png diff --git a/Fabric/src/main/java/at/petrak/hexcasting/fabric/client/HexRobesRenderer.java b/Fabric/src/main/java/at/petrak/hexcasting/fabric/client/HexRobesRenderer.java index b61c06e098..dfaa3c91eb 100644 --- a/Fabric/src/main/java/at/petrak/hexcasting/fabric/client/HexRobesRenderer.java +++ b/Fabric/src/main/java/at/petrak/hexcasting/fabric/client/HexRobesRenderer.java @@ -11,10 +11,10 @@ public class HexRobesRenderer { public static final List ROBE_ITEMS = List.of( - HexItems.ROBE_MASK.get(), - HexItems.ROBE_TUNIC.get(), - HexItems.ROBE_LEGS.get(), - HexItems.ROBE_BOOTS.get() + HexItems.ROBES_MASK.get(), + HexItems.ROBES_TUNIC.get(), + HexItems.ROBES_LEGS.get(), + HexItems.ROBES_BOOTS.get() ); public static void init() { diff --git a/Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/boots.json b/Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/boots.json new file mode 100644 index 0000000000..d872efd81d --- /dev/null +++ b/Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/boots.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "hexcasting:item/robes/boots1" + } +} \ No newline at end of file diff --git a/Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/legs.json b/Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/legs.json new file mode 100644 index 0000000000..fb41385983 --- /dev/null +++ b/Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/legs.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "hexcasting:item/robes/leggings1" + } +} \ No newline at end of file diff --git a/Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/mask.json b/Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/mask.json new file mode 100644 index 0000000000..4465daf8f4 --- /dev/null +++ b/Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/mask.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "hexcasting:item/robes/helmet1" + } +} \ No newline at end of file diff --git a/Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/tunic.json b/Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/tunic.json new file mode 100644 index 0000000000..4c9f5cb987 --- /dev/null +++ b/Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/tunic.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "hexcasting:item/robes/chestplate1" + } +} \ No newline at end of file diff --git a/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexClientInitializer.java b/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexClientInitializer.java index 46acccab05..ab718355c5 100644 --- a/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexClientInitializer.java +++ b/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexClientInitializer.java @@ -1,6 +1,5 @@ package at.petrak.hexcasting.forge; -import at.petrak.hexcasting.api.HexAPI; import at.petrak.hexcasting.client.ClientTickCounter; import at.petrak.hexcasting.client.Keybinds; import at.petrak.hexcasting.client.RegisterClientStuff; @@ -8,7 +7,6 @@ import at.petrak.hexcasting.client.gui.PatternTooltipComponent; import at.petrak.hexcasting.client.model.AltioraLayer; import at.petrak.hexcasting.client.model.HexModelLayers; -import at.petrak.hexcasting.client.model.HexRobesModel; import at.petrak.hexcasting.client.render.HexAdditionalRenderers; import at.petrak.hexcasting.client.render.shader.HexShaders; import at.petrak.hexcasting.common.casting.PatternRegistryManifest; @@ -24,8 +22,6 @@ import net.minecraft.client.color.item.ItemColors; import net.minecraft.client.model.HumanoidModel; import net.minecraft.client.model.PlayerModel; -import net.minecraft.client.model.geom.EntityModelSet; -import net.minecraft.client.model.geom.ModelPart; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.particle.ParticleProvider; import net.minecraft.client.particle.SpriteSet; @@ -39,7 +35,6 @@ import net.minecraft.world.item.ItemStack; import net.neoforged.bus.api.SubscribeEvent; import net.neoforged.fml.event.lifecycle.FMLClientSetupEvent; -import net.neoforged.neoforge.client.ClientHooks; import net.neoforged.neoforge.client.event.*; import net.neoforged.neoforge.client.extensions.common.IClientItemExtensions; import net.neoforged.neoforge.client.extensions.common.RegisterClientExtensionsEvent; @@ -171,7 +166,7 @@ public static void registerArmorRenderer(RegisterClientExtensionsEvent evt) { public HumanoidModel getHumanoidArmorModel(LivingEntity livingEntity, ItemStack itemStack, EquipmentSlot equipmentSlot, HumanoidModel original) { return MODELS.computeIfAbsent(equipmentSlot, ItemRobes::provideArmorModelForSlot); } - }, HexItems.ROBE_MASK.get(), HexItems.ROBE_TUNIC.get(), HexItems.ROBE_LEGS.get(), HexItems.ROBE_BOOTS.get()); + }, HexItems.ROBES_MASK.get(), HexItems.ROBES_TUNIC.get(), HexItems.ROBES_LEGS.get(), HexItems.ROBES_BOOTS.get()); } @SubscribeEvent diff --git a/Neoforge/src/main/java/at/petrak/hexcasting/forge/datagen/xplat/HexItemModels.java b/Neoforge/src/main/java/at/petrak/hexcasting/forge/datagen/xplat/HexItemModels.java index 864fb611ca..a4bd0770e0 100644 --- a/Neoforge/src/main/java/at/petrak/hexcasting/forge/datagen/xplat/HexItemModels.java +++ b/Neoforge/src/main/java/at/petrak/hexcasting/forge/datagen/xplat/HexItemModels.java @@ -80,6 +80,11 @@ protected void registerModels() { .translation(-2.5f, 0f, -8f) .scale(0.4f); + buildRobes(HexItems.ROBES_MASK.get(), "helmet", 1); + buildRobes(HexItems.ROBES_TUNIC.get(), "chestplate", 1); + buildRobes(HexItems.ROBES_LEGS.get(), "leggings", 1); + buildRobes(HexItems.ROBES_BOOTS.get(), "boots", 1); + singleTexture("old_staff", ResourceLocation.withDefaultNamespace("item/handheld_rod"), "layer0", modLoc("item/staff/old")); singleTexture("cherry_staff", ResourceLocation.withDefaultNamespace("item/handheld_rod"), @@ -276,6 +281,12 @@ private void buildStaff(Item item, String name) { .end(); } + private void buildRobes(Item item, String type, int numVariants) { + // TODO: actually handle the variants + singleTexture("item/" + getPath(item), ResourceLocation.withDefaultNamespace("item/generated"), + "layer0", modLoc("item/robes/"+type+"1")); + } + private void buildPackagedSpell(Item item, String stub, int numVariants) { var name = getPath(item); var builder = getBuilder(name); From 28ef18d8b8d7bded5663fae0ca2c4ee1e9dba766 Mon Sep 17 00:00:00 2001 From: Robotgiggle <88736742+Robotgiggle@users.noreply.github.com> Date: Mon, 24 Aug 2026 20:00:39 -0400 Subject: [PATCH 06/14] Implement model variant 3 --- .../client/model/HexRobesModel.java | 116 +++++++++++++++--- 1 file changed, 101 insertions(+), 15 deletions(-) diff --git a/Common/src/main/java/at/petrak/hexcasting/client/model/HexRobesModel.java b/Common/src/main/java/at/petrak/hexcasting/client/model/HexRobesModel.java index 3453b3c82d..87eab13823 100644 --- a/Common/src/main/java/at/petrak/hexcasting/client/model/HexRobesModel.java +++ b/Common/src/main/java/at/petrak/hexcasting/client/model/HexRobesModel.java @@ -48,39 +48,39 @@ public static LayerDefinition variant1() { var head = root.addOrReplaceChild("head", CubeListBuilder.create(), PartPose.ZERO); - head.addOrReplaceChild("Hood", + head.addOrReplaceChild("hood", CubeListBuilder.create() - .texOffs(0, 0).addBox(-8.0F, 0.0F, 0.0F, 8.0F, 8.0F, 8.0F, new CubeDeformation(0.5F)) - .texOffs(0, 16).addBox(-8.0F, 0.0F, 0.0F, 8.0F, 8.0F, 8.0F, new CubeDeformation(0.5F)), + .texOffs(0, 0).addBox(-8.0F, 0.0F, 0.0F, 8.0F, 8.0F, 8.0F, new CubeDeformation(0.3F)) + .texOffs(0, 16).addBox(-8.0F, 0.0F, 0.0F, 8.0F, 8.0F, 8.0F, new CubeDeformation(0.4F)), PartPose.offset(4.0F, -8.0F, -4.0F)); - head.addOrReplaceChild("Horns", + head.addOrReplaceChild("horns", CubeListBuilder.create() - .texOffs(24, 0).addBox(8.5F, 0.0F, 0.0F, 8.0F, 4.0F, 0.0F, new CubeDeformation(0.5F)) - .texOffs(24, 0).mirror().addBox(-7F, 0.0F, 0.0F, 8.0F, 4.0F, 0.0F, new CubeDeformation(0.5F)) + .texOffs(24, 0).addBox(8.5F, 0.0F, 0.0F, 8.0F, 4.0F, 0.0F, new CubeDeformation(0.3F)) + .texOffs(24, 0).mirror().addBox(-7F, 0.0F, 0.0F, 8.0F, 4.0F, 0.0F, new CubeDeformation(0.3F)) .mirror(false), PartPose.offset(-4.8F, -8.2F, 0.0F)); var body = root.addOrReplaceChild("body", CubeListBuilder.create(), PartPose.ZERO); - body.addOrReplaceChild("Torso", + body.addOrReplaceChild("tunic", CubeListBuilder.create() - .texOffs(40, 0).addBox(-8.0F, 0.0F, 0.0F, 8.0F, 12.0F, 4.0F, new CubeDeformation(0.5F)) - .texOffs(40, 16).addBox(-8.0F, 0.0F, 0.0F, 8.0F, 12.0F, 4.0F, new CubeDeformation(0.5F)), + .texOffs(40, 0).addBox(-8.0F, 0.0F, 0.0F, 8.0F, 12.0F, 4.0F, new CubeDeformation(0.3F)) + .texOffs(40, 16).addBox(-8.0F, 0.0F, 0.0F, 8.0F, 12.0F, 4.0F, new CubeDeformation(0.4F)), PartPose.offset(4.0F, 0.0F, -2.0F)); var rightArm = root.addOrReplaceChild("right_arm", CubeListBuilder.create(), PartPose.ZERO); rightArm.addOrReplaceChild("right_sleeve", CubeListBuilder.create() - .texOffs(0, 32).addBox(0.0F, 0.0F, 0.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.5F)), + .texOffs(0, 32).addBox(0.0F, 0.0F, 0.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.3F)), PartPose.offset(-3.0F, -2.0F, -2.0F)); var leftArm = root.addOrReplaceChild("left_arm", CubeListBuilder.create(), PartPose.ZERO); leftArm.addOrReplaceChild("left_sleeve", CubeListBuilder.create() - .texOffs(0, 32).mirror().addBox(0, 0.0F, 0.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.5F)) + .texOffs(0, 32).mirror().addBox(0, 0.0F, 0.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.3F)) .mirror(false), PartPose.offset(-1.0F, -2.0F, -2.0F)); @@ -88,30 +88,116 @@ public static LayerDefinition variant1() { PartDefinition Right_r1 = rightLeg.addOrReplaceChild("right_skirt", CubeListBuilder.create() - .texOffs(48, 32).mirror().addBox(-2.2F, -0.5F, -6.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.5F)) + .texOffs(48, 32).mirror().addBox(-2.2F, -0.5F, -6.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.4F)) .mirror(false), PartPose.offsetAndRotation(0.0F, 0.0F, 4.0F, 0.0F, 0.0F, 0.1309F)); rightLeg.addOrReplaceChild("right_boot", CubeListBuilder.create() - .texOffs(16, 41).addBox(-4.0F, 0.0F, 0.0F, 4.0F, 3.0F, 4.0F, new CubeDeformation(0.5F)), + .texOffs(16, 41).addBox(-4.0F, 0.0F, 0.0F, 4.0F, 3.0F, 4.0F, new CubeDeformation(0.3F)), PartPose.offset(2.0F, 9.0F, -2.0F)); var leftLeg = root.addOrReplaceChild("left_leg", CubeListBuilder.create(), PartPose.ZERO); PartDefinition Left_r1 = leftLeg.addOrReplaceChild("left_skirt", CubeListBuilder.create() - .texOffs(48, 32).addBox(-1.8F, -0.5F, -6.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.5F)), + .texOffs(48, 32).addBox(-1.8F, -0.5F, -6.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.4F)), PartPose.offsetAndRotation(0.0F, 0.0F, 4.0F, 0.0F, 0.0F, -0.1309F)); leftLeg.addOrReplaceChild("left_boot", CubeListBuilder.create() - .texOffs(16, 41).addBox(0.0F, 0.0F, 0.0F, 4.0F, 3.0F, 4.0F, new CubeDeformation(0.5F)), + .texOffs(16, 41).addBox(0.0F, 0.0F, 0.0F, 4.0F, 3.0F, 4.0F, new CubeDeformation(0.3F)), PartPose.offset(-2.0F, 9.0F, -2.0F)); return LayerDefinition.create(meshdef, 64, 64); } + public static LayerDefinition variant3() { + MeshDefinition meshdef = new MeshDefinition(); + PartDefinition root = meshdef.getRoot(); + + root.addOrReplaceChild("hat", CubeListBuilder.create(), PartPose.ZERO); + + var head = root.addOrReplaceChild("head", CubeListBuilder.create(), PartPose.ZERO); + + head.addOrReplaceChild("hood", + CubeListBuilder.create() + .texOffs(0, 0).addBox(-8.0F, 0.0F, 0.0F, 8.0F, 8.0F, 8.0F, new CubeDeformation(0.3F)) + .texOffs(0, 16).addBox(-8.0F, 0.0F, 0.0F, 8.0F, 8.0F, 8.0F, new CubeDeformation(0.4F)), + PartPose.offset(4.0F, -8.0F, -4.0F)); + + head.addOrReplaceChild("right_horn", + CubeListBuilder.create() + .texOffs(24, 0).mirror().addBox(-7.0F, -4.0F, 0.0F, 8.0F, 8.0F, 0.0F, new CubeDeformation(0.3F, 0.3F, 0.0F)) + .mirror(false), + PartPose.offsetAndRotation(-5.0F, -8.7F, 0.0F, 0.0F, 0.0F, 1.309F)); + + head.addOrReplaceChild("left_horn", + CubeListBuilder.create() + .texOffs(24, 0).addBox(-1.0F, -4.0F, 0.0F, 8.0F, 8.0F, 0.0F, new CubeDeformation(0.3F, 0.3F, 0.0F)), + PartPose.offsetAndRotation(5.0F, -8.7F, 0.0F, 0.0F, 0.0F, -1.309F)); + + var body = root.addOrReplaceChild("body", CubeListBuilder.create(), PartPose.ZERO); + + body.addOrReplaceChild("tunic", + CubeListBuilder.create() + .texOffs(40, 0).addBox(-8.0F, 0.0F, 0.0F, 8.0F, 12.0F, 4.0F, new CubeDeformation(0.3F)) + .texOffs(40, 16).addBox(-8.0F, 0.0F, 0.0F, 8.0F, 12.0F, 4.0F, new CubeDeformation(0.4F)), + PartPose.offset(4.0F, 0.0F, -2.0F)); + + var sash = body.addOrReplaceChild("sash", + CubeListBuilder.create() + .texOffs(32, 48).addBox(-10.4F, -3.9F, 0.0F, 3.0F, 3.0F, 6.0F, new CubeDeformation(0.1F)), + PartPose.offset(5.5F, 10.8F, -3.0F)); + + sash.addOrReplaceChild("strap", + CubeListBuilder.create() + .texOffs(0, 48).addBox(-9.05F, -13.2F, -3.0F, 10.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-6.2F, 11.45F, 3.0F, 0.0F, 0.0F, 0.3927F)); + + var rightArm = root.addOrReplaceChild("right_arm", CubeListBuilder.create(), PartPose.ZERO); + + rightArm.addOrReplaceChild("right_sleeve", + CubeListBuilder.create() + .texOffs(0, 32).addBox(0.0F, 0.0F, 0.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.3F)), + PartPose.offset(-3.0F, -2.0F, -2.0F)); + + var leftArm = root.addOrReplaceChild("left_arm", CubeListBuilder.create(), PartPose.ZERO); + + leftArm.addOrReplaceChild("left_sleeve", + CubeListBuilder.create() + .texOffs(0, 32).mirror().addBox(0, 0.0F, 0.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.3F)) + .mirror(false), + PartPose.offset(-1.0F, -2.0F, -2.0F)); + + var rightLeg = root.addOrReplaceChild("right_leg", CubeListBuilder.create(), PartPose.ZERO); + + rightLeg.addOrReplaceChild("right_skirt", + CubeListBuilder.create() + .texOffs(48, 32).addBox(-4.0F, 0.0F, 0.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.3F)), + PartPose.offset(2.0F, 0.0F, -2.0F)); + + rightLeg.addOrReplaceChild("right_boot", + CubeListBuilder.create() + .texOffs(16, 40).addBox(-4.0F, 8.0F, 0.0F, 4.0F, 4.0F, 4.0F, new CubeDeformation(0.35F)), + PartPose.offset(2.0F, 0.0F, -2.0F)); + + var leftLeg = root.addOrReplaceChild("left_leg", CubeListBuilder.create(), PartPose.ZERO); + + leftLeg.addOrReplaceChild("left_skirt", + CubeListBuilder.create() + .texOffs(48, 32).mirror().addBox(-4.0F, 0.0F, 0.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.35F)) + .mirror(false), + PartPose.offset(2.0F, 0.0F, -2.0F)); + + leftLeg.addOrReplaceChild("left_boot", + CubeListBuilder.create() + .texOffs(16, 40).addBox(-4.0F, 8.0F, 0.0F, 4.0F, 4.0F, 4.0F, new CubeDeformation(0.3F)), + PartPose.offset(2.0F, 0.0F, -2.0F)); + + return LayerDefinition.create(meshdef, 64, 64); + } + @Override public void renderToBuffer(PoseStack ms, VertexConsumer buffer, int light, int overlay, int color) { renderArmorPart(slot); From d16b19d28adcdea2a0ef6b222e6ff4b7f21dd192 Mon Sep 17 00:00:00 2001 From: Robotgiggle <88736742+Robotgiggle@users.noreply.github.com> Date: Mon, 24 Aug 2026 20:24:14 -0400 Subject: [PATCH 07/14] Implement model variant 2 --- .../client/model/HexRobesModel.java | 76 +++++++++++++++++++ 1 file changed, 76 insertions(+) diff --git a/Common/src/main/java/at/petrak/hexcasting/client/model/HexRobesModel.java b/Common/src/main/java/at/petrak/hexcasting/client/model/HexRobesModel.java index 87eab13823..98e1bb615f 100644 --- a/Common/src/main/java/at/petrak/hexcasting/client/model/HexRobesModel.java +++ b/Common/src/main/java/at/petrak/hexcasting/client/model/HexRobesModel.java @@ -112,6 +112,82 @@ public static LayerDefinition variant1() { return LayerDefinition.create(meshdef, 64, 64); } + public static LayerDefinition variant2() { + MeshDefinition meshdef = new MeshDefinition(); + PartDefinition root = meshdef.getRoot(); + + root.addOrReplaceChild("hat", CubeListBuilder.create(), PartPose.ZERO); + + var head = root.addOrReplaceChild("head", CubeListBuilder.create(), PartPose.ZERO); + + head.addOrReplaceChild("hood", + CubeListBuilder.create() + .texOffs(0, 0).addBox(-8.0F, 0.0F, 0.0F, 8.0F, 8.0F, 8.0F, new CubeDeformation(0.3F)) + .texOffs(0, 16).addBox(-8.0F, 0.0F, 0.0F, 8.0F, 8.0F, 8.0F, new CubeDeformation(0.4F)), + PartPose.offset(4.0F, -8.0F, -4.0F)); + + head.addOrReplaceChild("right_horn", + CubeListBuilder.create() + .texOffs(24, 0).addBox(-4.0F, -2.0F, 0.0F, 8.0F, 4.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(4.25F, -12.25F, 0.0F, 0.0F, 0.0F, -1.5708F)); + + head.addOrReplaceChild("left_horn", + CubeListBuilder.create() + .texOffs(24, 0).mirror().addBox(-4.0F, -2.0F, 0.0F, 8.0F, 4.0F, 0.0F, new CubeDeformation(0.0F)) + .mirror(false), + PartPose.offsetAndRotation(-4.25F, -12.25F, 0.0F, 0.0F, 0.0F, 1.5708F)); + + var body = root.addOrReplaceChild("body", CubeListBuilder.create(), PartPose.ZERO); + + body.addOrReplaceChild("tunic", + CubeListBuilder.create() + .texOffs(40, 0).addBox(-8.0F, 0.0F, 0.0F, 8.0F, 12.0F, 4.0F, new CubeDeformation(0.3F)) + .texOffs(40, 16).addBox(-8.0F, 0.0F, 0.0F, 8.0F, 12.0F, 4.0F, new CubeDeformation(0.4F)), + PartPose.offset(4.0F, 0.0F, -2.0F)); + + var rightArm = root.addOrReplaceChild("right_arm", CubeListBuilder.create(), PartPose.ZERO); + + rightArm.addOrReplaceChild("right_sleeve", + CubeListBuilder.create() + .texOffs(0, 32).addBox(0.0F, 0.0F, 0.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.3F)), + PartPose.offset(-3.0F, -2.0F, -2.0F)); + + var leftArm = root.addOrReplaceChild("left_arm", CubeListBuilder.create(), PartPose.ZERO); + + leftArm.addOrReplaceChild("left_sleeve", + CubeListBuilder.create() + .texOffs(0, 32).mirror().addBox(0, 0.0F, 0.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.3F)) + .mirror(false), + PartPose.offset(-1.0F, -2.0F, -2.0F)); + + var rightLeg = root.addOrReplaceChild("right_leg", CubeListBuilder.create(), PartPose.ZERO); + + rightLeg.addOrReplaceChild("right_skirt", + CubeListBuilder.create() + .texOffs(48, 32).mirror().addBox(-4.0F, 0.0F, 0.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.4F)) + .mirror(false), + PartPose.offset(2.0F, 0.0F, -2.0F)); + + rightLeg.addOrReplaceChild("right_boot", + CubeListBuilder.create() + .texOffs(16, 40).addBox(-4.0F, 8.0F, 0.0F, 4.0F, 4.0F, 4.0F, new CubeDeformation(0.3F)), + PartPose.offset(2.0F, 0.0F, -2.0F)); + + var leftLeg = root.addOrReplaceChild("left_leg", CubeListBuilder.create(), PartPose.ZERO); + + leftLeg.addOrReplaceChild("left_skirt", + CubeListBuilder.create() + .texOffs(48, 32).addBox(-4.0F, 0.0F, 0.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.4F)), + PartPose.offset(2.0F, 0.0F, -2.0F)); + + leftLeg.addOrReplaceChild("left_boot", + CubeListBuilder.create() + .texOffs(16, 40).addBox(-4.0F, 8.0F, 0.0F, 4.0F, 4.0F, 4.0F, new CubeDeformation(0.3F)), + PartPose.offset(2.0F, 0.0F, -2.0F)); + + return LayerDefinition.create(meshdef, 64, 64); + } + public static LayerDefinition variant3() { MeshDefinition meshdef = new MeshDefinition(); PartDefinition root = meshdef.getRoot(); From 2b41996ab8444dbc28b1cc0a44c36b2534edc2b8 Mon Sep 17 00:00:00 2001 From: Robotgiggle <88736742+Robotgiggle@users.noreply.github.com> Date: Mon, 24 Aug 2026 20:32:39 -0400 Subject: [PATCH 08/14] Add blockbench models to repo --- art/robes/Robes1.bbmodel | 1 + art/robes/Robes2.bbmodel | 1 + art/robes/Robes3.bbmodel | 1 + 3 files changed, 3 insertions(+) create mode 100644 art/robes/Robes1.bbmodel create mode 100644 art/robes/Robes2.bbmodel create mode 100644 art/robes/Robes3.bbmodel diff --git a/art/robes/Robes1.bbmodel b/art/robes/Robes1.bbmodel new file mode 100644 index 0000000000..61a422e741 --- /dev/null +++ b/art/robes/Robes1.bbmodel @@ -0,0 +1 @@ +{"meta":{"format_version":"5.0","model_format":"modded_entity","box_uv":true},"name":"Robes1","model_identifier":"","modded_entity_entity_class":"","modded_entity_version":"1.17","modded_entity_flip_y":true,"visible_box":[1,1,0],"variable_placeholders":"","multi_file_ruleset":"","variable_placeholder_buttons":[],"timeline_setups":[],"unhandled_root_fields":{},"resolution":{"width":64,"height":64},"elements":[{"name":"hood_outer","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-4,24,-4],"to":[4,32,4],"autouv":0,"color":7,"inflate":0.4,"origin":[0,0,0],"uv_offset":[0,16],"faces":{"north":{"uv":[8,24,16,32],"texture":0},"east":{"uv":[0,24,8,32],"texture":0},"south":{"uv":[24,24,32,32],"texture":0},"west":{"uv":[16,24,24,32],"texture":0},"up":{"uv":[16,24,8,16],"texture":0},"down":{"uv":[24,16,16,24],"texture":0}},"type":"cube","uuid":"1581b57e-00c2-c3a2-d822-b969220a28d4"},{"name":"hood_inner","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-4,24,-4],"to":[4,32,4],"autouv":0,"color":3,"inflate":0.3,"origin":[0,0,0],"faces":{"north":{"uv":[8,8,16,16],"texture":0},"east":{"uv":[0,8,8,16],"texture":0},"south":{"uv":[24,8,32,16],"texture":0},"west":{"uv":[16,8,24,16],"texture":0},"up":{"uv":[16,8,8,0],"texture":0},"down":{"uv":[24,0,16,8],"texture":0}},"type":"cube","uuid":"c5b38b99-6a56-d9ff-e64c-7b6f865f9a78"},{"name":"left_horn","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-11.7,28.2,0],"to":[-3.7,32.2,0],"autouv":0,"color":2,"inflate":0.3,"origin":[0,0,0],"uv_offset":[24,0],"faces":{"north":{"uv":[24,0,32,4],"texture":0},"east":{"uv":[24,0,24,4],"texture":0},"south":{"uv":[32,0,40,4],"texture":0},"west":{"uv":[32,0,32,4],"texture":0},"up":{"uv":[32,0,24,0],"texture":0},"down":{"uv":[40,0,32,0],"texture":0}},"type":"cube","uuid":"6964045e-8723-0987-f243-5ea5477fe7de"},{"name":"right_horn","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[3.8,28.2,0],"to":[11.8,32.2,0],"autouv":0,"color":0,"mirror_uv":true,"inflate":0.3,"origin":[0,0,0],"uv_offset":[24,0],"faces":{"north":{"uv":[32,0,24,4],"texture":0},"east":{"uv":[32,0,32,4],"texture":0},"south":{"uv":[40,0,32,4],"texture":0},"west":{"uv":[24,0,24,4],"texture":0},"up":{"uv":[24,0,32,0],"texture":0},"down":{"uv":[32,0,40,0],"texture":0}},"type":"cube","uuid":"f33f09f2-5156-ad5f-6a83-b6ec43dd94ba"},{"name":"tunic_outer","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-4,12,-2],"to":[4,24,2],"autouv":0,"color":4,"inflate":0.4,"origin":[0,0,0],"uv_offset":[40,16],"faces":{"north":{"uv":[44,20,52,32],"texture":0},"east":{"uv":[40,20,44,32],"texture":0},"south":{"uv":[56,20,64,32],"texture":0},"west":{"uv":[52,20,56,32],"texture":0},"up":{"uv":[52,20,44,16],"texture":0},"down":{"uv":[60,16,52,20],"texture":0}},"type":"cube","uuid":"e8531e9d-18f6-891f-90e4-7521fdc4d333"},{"name":"tunic_inner","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-4,12,-2],"to":[4,24,2],"autouv":0,"color":7,"inflate":0.3,"origin":[0,0,0],"uv_offset":[40,0],"faces":{"north":{"uv":[44,4,52,16],"texture":0},"east":{"uv":[40,4,44,16],"texture":0},"south":{"uv":[56,4,64,16],"texture":0},"west":{"uv":[52,4,56,16],"texture":0},"up":{"uv":[52,4,44,0],"texture":0},"down":{"uv":[60,0,52,4],"texture":0}},"type":"cube","uuid":"39cd0047-8c4e-0c56-9ba0-6821e5288d85"},{"name":"right_sleeve","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[4,12,-2],"to":[8,24,2],"autouv":0,"color":3,"inflate":0.3,"origin":[0,0,0],"uv_offset":[0,32],"faces":{"north":{"uv":[4,36,8,48],"texture":0},"east":{"uv":[0,36,4,48],"texture":0},"south":{"uv":[12,36,16,48],"texture":0},"west":{"uv":[8,36,12,48],"texture":0},"up":{"uv":[8,36,4,32],"texture":0},"down":{"uv":[12,32,8,36],"texture":0}},"type":"cube","uuid":"980d2769-4452-dfb8-65e0-279fe928b4dc"},{"name":"left_sleeve","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-8,12,-2],"to":[-4,24,2],"autouv":0,"color":0,"mirror_uv":true,"inflate":0.3,"origin":[0,0,0],"uv_offset":[0,32],"faces":{"north":{"uv":[8,36,4,48],"texture":0},"east":{"uv":[12,36,8,48],"texture":0},"south":{"uv":[16,36,12,48],"texture":0},"west":{"uv":[4,36,0,48],"texture":0},"up":{"uv":[4,36,8,32],"texture":0},"down":{"uv":[8,32,12,36],"texture":0}},"type":"cube","uuid":"a67ab72a-fddc-6238-2450-0efdf132c8f1"},{"name":"right_skirt","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[1.75,0.25,-2],"to":[5.75,12.25,2],"autouv":0,"color":1,"mirror_uv":true,"inflate":0.4,"rotation":[0,0,7.5],"origin":[1.75,0.25,0],"uv_offset":[48,32],"faces":{"north":{"uv":[56,36,52,48],"texture":0},"east":{"uv":[60,36,56,48],"texture":0},"south":{"uv":[64,36,60,48],"texture":0},"west":{"uv":[52,36,48,48],"texture":0},"up":{"uv":[52,36,56,32],"texture":0},"down":{"uv":[56,32,60,36],"texture":0}},"type":"cube","uuid":"9f17843d-d8f7-54ed-8955-46c9f9b16c58"},{"name":"left_skirt","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-5.85,0.25,-2],"to":[-1.85,12.25,2],"autouv":0,"color":6,"inflate":0.4,"rotation":[0,0,-7.5],"origin":[-1.75,-0.25,0],"uv_offset":[48,32],"faces":{"north":{"uv":[52,36,56,48],"texture":0},"east":{"uv":[48,36,52,48],"texture":0},"south":{"uv":[60,36,64,48],"texture":0},"west":{"uv":[56,36,60,48],"texture":0},"up":{"uv":[56,36,52,32],"texture":0},"down":{"uv":[60,32,56,36],"texture":0}},"type":"cube","uuid":"948db43e-cb45-4d54-b8c9-2fff5114297d"},{"name":"left_boot","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-4,0,-2],"to":[0,3,2],"autouv":0,"color":9,"inflate":0.3,"origin":[0,0,0],"uv_offset":[16,41],"faces":{"north":{"uv":[20,45,24,48],"texture":0},"east":{"uv":[16,45,20,48],"texture":0},"south":{"uv":[28,45,32,48],"texture":0},"west":{"uv":[24,45,28,48],"texture":0},"up":{"uv":[24,45,20,41],"texture":0},"down":{"uv":[28,41,24,45],"texture":0}},"type":"cube","uuid":"79498393-90f7-57dc-503c-6574ada461b9"},{"name":"right_boot","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[0,0,-2],"to":[4,3,2],"autouv":0,"color":2,"inflate":0.3,"origin":[0,0,0],"uv_offset":[16,41],"faces":{"north":{"uv":[20,45,24,48],"texture":0},"east":{"uv":[16,45,20,48],"texture":0},"south":{"uv":[28,45,32,48],"texture":0},"west":{"uv":[24,45,28,48],"texture":0},"up":{"uv":[24,45,20,41],"texture":0},"down":{"uv":[28,41,24,45],"texture":0}},"type":"cube","uuid":"ef919b63-e2e6-f0f2-daa2-f3617e632db6"}],"groups":[{"name":"head","uuid":"fd15bc83-0616-6b91-4dc0-205078c28696","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[-4,32,-4],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"horns","uuid":"392fe1f0-1ca6-16cb-3fdf-f4df1acbea50","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[4.8,32.2,0],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":false,"primary_selected":false},{"name":"body","uuid":"3ce8c80e-9c6b-c2c7-d890-65103951659b","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[-4,24,-2],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"leftArm","uuid":"8b7e8f66-6842-18bf-5ec6-ed8186b30dcc","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[4,24,-2],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"rightArm","uuid":"3f6f3a5d-40f0-79e0-f4c7-8260f3f17f66","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[-8,24,-2],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"rightLeg","uuid":"ad7f6d7b-a515-346a-234d-92719a8f6f03","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[2,12.25,-2],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"leftLeg","uuid":"89bec69e-bfd8-c0e8-d1df-5948a74a5ae4","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[-4.1,12.5,-2],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false}],"outliner":[{"uuid":"fd15bc83-0616-6b91-4dc0-205078c28696","isOpen":true,"children":["c5b38b99-6a56-d9ff-e64c-7b6f865f9a78","1581b57e-00c2-c3a2-d822-b969220a28d4",{"uuid":"392fe1f0-1ca6-16cb-3fdf-f4df1acbea50","isOpen":false,"children":["6964045e-8723-0987-f243-5ea5477fe7de","f33f09f2-5156-ad5f-6a83-b6ec43dd94ba"]}]},{"uuid":"3ce8c80e-9c6b-c2c7-d890-65103951659b","isOpen":true,"children":["39cd0047-8c4e-0c56-9ba0-6821e5288d85","e8531e9d-18f6-891f-90e4-7521fdc4d333"]},{"uuid":"3f6f3a5d-40f0-79e0-f4c7-8260f3f17f66","isOpen":true,"children":["980d2769-4452-dfb8-65e0-279fe928b4dc"]},{"uuid":"8b7e8f66-6842-18bf-5ec6-ed8186b30dcc","isOpen":true,"children":["a67ab72a-fddc-6238-2450-0efdf132c8f1"]},{"uuid":"ad7f6d7b-a515-346a-234d-92719a8f6f03","isOpen":true,"children":["9f17843d-d8f7-54ed-8955-46c9f9b16c58","ef919b63-e2e6-f0f2-daa2-f3617e632db6"]},{"uuid":"89bec69e-bfd8-c0e8-d1df-5948a74a5ae4","isOpen":true,"children":["948db43e-cb45-4d54-b8c9-2fff5114297d","79498393-90f7-57dc-503c-6574ada461b9"]}],"textures":[{"name":"","path":"","folder":"","namespace":"","id":"0","group":"","scope":0,"width":64,"height":64,"uv_width":64,"uv_height":64,"particle":false,"use_as_default":false,"layers_enabled":false,"sync_to_project":"","file_format":"png","render_mode":"default","render_sides":"auto","wrap_mode":"limited","pbr_channel":"color","fps":7,"frame_time":1,"frame_order_type":"loop","frame_order":"","frame_interpolate":false,"visible":true,"internal":true,"saved":false,"uuid":"76798d81-bebb-9cf7-cb53-4b3c6019c51a","source":"data:image/png;base64,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"}]} \ No newline at end of file diff --git a/art/robes/Robes2.bbmodel b/art/robes/Robes2.bbmodel new file mode 100644 index 0000000000..690b827aa2 --- /dev/null +++ b/art/robes/Robes2.bbmodel @@ -0,0 +1 @@ +{"meta":{"format_version":"5.0","model_format":"modded_entity","box_uv":true},"name":"Robes2","model_identifier":"","modded_entity_entity_class":"","modded_entity_version":"1.17","modded_entity_flip_y":true,"visible_box":[1,1,0],"variable_placeholders":"","multi_file_ruleset":"","variable_placeholder_buttons":[],"timeline_setups":[],"unhandled_root_fields":{},"resolution":{"width":64,"height":64},"elements":[{"name":"hood_outer","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-4,24,-4],"to":[4,32,4],"autouv":0,"color":3,"inflate":0.4,"origin":[0,0,0],"uv_offset":[0,16],"faces":{"north":{"uv":[8,24,16,32],"texture":0},"east":{"uv":[0,24,8,32],"texture":0},"south":{"uv":[24,24,32,32],"texture":0},"west":{"uv":[16,24,24,32],"texture":0},"up":{"uv":[16,24,8,16],"texture":0},"down":{"uv":[24,16,16,24],"texture":0}},"type":"cube","uuid":"b2301383-7b8a-8d9f-c284-318663224705"},{"name":"hood_inner","box_uv":true,"render_order":"behind","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-4,24,-4],"to":[4,32,4],"autouv":0,"color":0,"inflate":0.3,"origin":[0,0,0],"faces":{"north":{"uv":[8,8,16,16],"texture":0},"east":{"uv":[0,8,8,16],"texture":0},"south":{"uv":[24,8,32,16],"texture":0},"west":{"uv":[16,8,24,16],"texture":0},"up":{"uv":[16,8,8,0],"texture":0},"down":{"uv":[24,0,16,8],"texture":0}},"type":"cube","uuid":"cec6b116-5e7e-77d1-1f1a-e56dfe32702c"},{"name":"right_horn","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-8.25,34.25,0],"to":[-0.25,38.25,0],"autouv":0,"color":6,"rotation":[0,0,-90],"origin":[-4.25,36.25,0],"uv_offset":[24,0],"faces":{"north":{"uv":[24,0,32,4],"texture":0},"east":{"uv":[24,0,24,4],"texture":0},"south":{"uv":[32,0,40,4],"texture":0},"west":{"uv":[32,0,32,4],"texture":0},"up":{"uv":[32,0,24,0],"texture":0},"down":{"uv":[40,0,32,0],"texture":0}},"type":"cube","uuid":"cae1f41b-7569-26aa-acc4-3ed8d8815444"},{"name":"tunic_outer","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-4,12,-2],"to":[4,24,2],"autouv":0,"color":7,"inflate":0.4,"origin":[0,0,0],"uv_offset":[40,16],"faces":{"north":{"uv":[44,20,52,32],"texture":0},"east":{"uv":[40,20,44,32],"texture":0},"south":{"uv":[56,20,64,32],"texture":0},"west":{"uv":[52,20,56,32],"texture":0},"up":{"uv":[52,20,44,16],"texture":0},"down":{"uv":[60,16,52,20],"texture":0}},"type":"cube","uuid":"a19f6d42-3fe9-bb4c-480e-d6574977d99f"},{"name":"tunic_inner","box_uv":true,"render_order":"behind","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-4,12,-2],"to":[4,24,2],"autouv":0,"color":3,"inflate":0.3,"origin":[0,0,0],"uv_offset":[40,0],"faces":{"north":{"uv":[44,4,52,16],"texture":0},"east":{"uv":[40,4,44,16],"texture":0},"south":{"uv":[56,4,64,16],"texture":0},"west":{"uv":[52,4,56,16],"texture":0},"up":{"uv":[52,4,44,0],"texture":0},"down":{"uv":[60,0,52,4],"texture":0}},"type":"cube","uuid":"d6c0c5b1-527b-cf1f-061a-36c7e9bb98db"},{"name":"left_sleeve","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-8,12,-2],"to":[-4,24,2],"autouv":0,"color":3,"mirror_uv":true,"inflate":0.3,"origin":[0,0,0],"uv_offset":[0,32],"faces":{"north":{"uv":[8,36,4,48],"texture":0},"east":{"uv":[12,36,8,48],"texture":0},"south":{"uv":[16,36,12,48],"texture":0},"west":{"uv":[4,36,0,48],"texture":0},"up":{"uv":[4,36,8,32],"texture":0},"down":{"uv":[8,32,12,36],"texture":0}},"type":"cube","uuid":"818aa72b-cef1-58e9-725c-5eaa37f7b9dc"},{"name":"right_sleeve","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[4,12,-2],"to":[8,24,2],"autouv":0,"color":7,"inflate":0.3,"origin":[0,0,0],"uv_offset":[0,32],"faces":{"north":{"uv":[4,36,8,48],"texture":0},"east":{"uv":[0,36,4,48],"texture":0},"south":{"uv":[12,36,16,48],"texture":0},"west":{"uv":[8,36,12,48],"texture":0},"up":{"uv":[8,36,4,32],"texture":0},"down":{"uv":[12,32,8,36],"texture":0}},"type":"cube","uuid":"dbf8c827-9338-7729-bb47-4f346cdf3592"},{"name":"left_skirt","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-4,0,-2],"to":[0,12,2],"autouv":0,"color":8,"inflate":0.4,"origin":[-4,0,0],"uv_offset":[48,32],"faces":{"north":{"uv":[52,36,56,48],"texture":0},"east":{"uv":[48,36,52,48],"texture":0},"south":{"uv":[60,36,64,48],"texture":0},"west":{"uv":[56,36,60,48],"texture":0},"up":{"uv":[56,36,52,32],"texture":0},"down":{"uv":[60,32,56,36],"texture":0}},"type":"cube","uuid":"22bfadf3-71a3-962a-553b-5d9aff88ddc3"},{"name":"right_skirt","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[0,0,-2],"to":[4,12,2],"autouv":0,"color":8,"mirror_uv":true,"inflate":0.4,"origin":[4,0,0],"uv_offset":[48,32],"faces":{"north":{"uv":[56,36,52,48],"texture":0},"east":{"uv":[60,36,56,48],"texture":0},"south":{"uv":[64,36,60,48],"texture":0},"west":{"uv":[52,36,48,48],"texture":0},"up":{"uv":[52,36,56,32],"texture":0},"down":{"uv":[56,32,60,36],"texture":0}},"type":"cube","uuid":"1f6091bd-5faa-e333-da79-c6c57a92952a"},{"name":"left_boot","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-4,0,-2],"to":[0,4,2],"autouv":0,"color":8,"inflate":0.3,"origin":[0,0,0],"uv_offset":[16,40],"faces":{"north":{"uv":[20,44,24,48],"texture":0},"east":{"uv":[16,44,20,48],"texture":0},"south":{"uv":[28,44,32,48],"texture":0},"west":{"uv":[24,44,28,48],"texture":0},"up":{"uv":[24,44,20,40],"texture":0},"down":{"uv":[28,40,24,44],"texture":0}},"type":"cube","uuid":"5a38ae46-c69d-e663-6bf0-db99aa735735"},{"name":"right_boot","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[0,0,-2],"to":[4,4,2],"autouv":0,"color":4,"inflate":0.3,"origin":[0,0,0],"uv_offset":[16,40],"faces":{"north":{"uv":[20,44,24,48],"texture":0},"east":{"uv":[16,44,20,48],"texture":0},"south":{"uv":[28,44,32,48],"texture":0},"west":{"uv":[24,44,28,48],"texture":0},"up":{"uv":[24,44,20,40],"texture":0},"down":{"uv":[28,40,24,44],"texture":0}},"type":"cube","uuid":"60e41237-317f-4c78-8b20-dab88a2ba123"},{"name":"left_horn","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[0.25,34.25,0],"to":[8.25,38.25,0],"autouv":0,"color":7,"mirror_uv":true,"rotation":[0,0,90],"origin":[4.25,36.25,0],"uv_offset":[24,0],"faces":{"north":{"uv":[32,0,24,4],"texture":0},"east":{"uv":[32,0,32,4],"texture":0},"south":{"uv":[40,0,32,4],"texture":0},"west":{"uv":[24,0,24,4],"texture":0},"up":{"uv":[24,0,32,0],"texture":0},"down":{"uv":[32,0,40,0],"texture":0}},"type":"cube","uuid":"c3b4c436-d99b-e573-ef06-7f6c2bd3370f"}],"groups":[{"name":"head","uuid":"a98bbf19-0b66-952c-1616-51351bc4fde0","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[-4,32,-4],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"body","uuid":"a946c104-4b18-70b2-14d4-8c06829849be","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[-4,24,-2],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"rightArm","uuid":"26a798c8-f71d-51b0-0be9-e11439c93c86","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[4,24,-2],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"leftArm","uuid":"759c4eae-7953-1987-4504-74b1555e5c39","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[-8,24,-2],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"leftLeg","uuid":"46e6c36b-8782-ecc4-f6be-415512f92d4a","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[-4,12,-2],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"rightLeg","uuid":"e5bb982a-468b-c3e8-d99f-7b7a594eefed","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[0,12,-2],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"horns","uuid":"5e0675dc-8bb1-c564-3970-d9333592e0b3","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[-4.25,36.25,0],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false}],"outliner":[{"uuid":"a98bbf19-0b66-952c-1616-51351bc4fde0","isOpen":true,"children":["cec6b116-5e7e-77d1-1f1a-e56dfe32702c","b2301383-7b8a-8d9f-c284-318663224705",{"uuid":"5e0675dc-8bb1-c564-3970-d9333592e0b3","isOpen":true,"children":["cae1f41b-7569-26aa-acc4-3ed8d8815444","c3b4c436-d99b-e573-ef06-7f6c2bd3370f"]}]},{"uuid":"a946c104-4b18-70b2-14d4-8c06829849be","isOpen":true,"children":["d6c0c5b1-527b-cf1f-061a-36c7e9bb98db","a19f6d42-3fe9-bb4c-480e-d6574977d99f"]},{"uuid":"26a798c8-f71d-51b0-0be9-e11439c93c86","isOpen":true,"children":["dbf8c827-9338-7729-bb47-4f346cdf3592"]},{"uuid":"759c4eae-7953-1987-4504-74b1555e5c39","isOpen":true,"children":["818aa72b-cef1-58e9-725c-5eaa37f7b9dc"]},{"uuid":"e5bb982a-468b-c3e8-d99f-7b7a594eefed","isOpen":true,"children":["1f6091bd-5faa-e333-da79-c6c57a92952a","60e41237-317f-4c78-8b20-dab88a2ba123"]},{"uuid":"46e6c36b-8782-ecc4-f6be-415512f92d4a","isOpen":true,"children":["22bfadf3-71a3-962a-553b-5d9aff88ddc3","5a38ae46-c69d-e663-6bf0-db99aa735735"]}],"textures":[{"name":"","path":"","folder":"","namespace":"","id":"0","group":"","scope":0,"width":64,"height":64,"uv_width":64,"uv_height":64,"particle":false,"use_as_default":false,"layers_enabled":false,"sync_to_project":"","file_format":"png","render_mode":"default","render_sides":"auto","wrap_mode":"limited","pbr_channel":"color","fps":7,"frame_time":1,"frame_order_type":"loop","frame_order":"","frame_interpolate":false,"visible":true,"internal":true,"saved":false,"uuid":"ae10bf54-61f3-91d7-642d-574fba3483bc","source":"data:image/png;base64,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"}]} \ No newline at end of file diff --git a/art/robes/Robes3.bbmodel b/art/robes/Robes3.bbmodel new file mode 100644 index 0000000000..5c0bb4790f --- /dev/null +++ b/art/robes/Robes3.bbmodel @@ -0,0 +1 @@ +{"meta":{"format_version":"5.0","model_format":"modded_entity","box_uv":true},"name":"Robes3","model_identifier":"","modded_entity_entity_class":"","modded_entity_version":"1.17","modded_entity_flip_y":true,"visible_box":[1,1,0],"variable_placeholders":"","multi_file_ruleset":"","variable_placeholder_buttons":[],"timeline_setups":[],"unhandled_root_fields":{},"resolution":{"width":64,"height":64},"elements":[{"name":"hood_outer","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-4,24,-4],"to":[4,32,4],"autouv":0,"color":4,"inflate":0.4,"origin":[0,0,0],"uv_offset":[0,16],"faces":{"north":{"uv":[8,24,16,32],"texture":0},"east":{"uv":[0,24,8,32],"texture":0},"south":{"uv":[24,24,32,32],"texture":0},"west":{"uv":[16,24,24,32],"texture":0},"up":{"uv":[16,24,8,16],"texture":0},"down":{"uv":[24,16,16,24],"texture":0}},"type":"cube","uuid":"bb31bdb7-b4f5-8fd6-0631-ad789263fce7"},{"name":"hood_inner","box_uv":true,"render_order":"behind","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-4,24,-4],"to":[4,32,4],"autouv":0,"color":8,"inflate":0.3,"origin":[0,0,0],"faces":{"north":{"uv":[8,8,16,16],"texture":0},"east":{"uv":[0,8,8,16],"texture":0},"south":{"uv":[24,8,32,16],"texture":0},"west":{"uv":[16,8,24,16],"texture":0},"up":{"uv":[16,8,8,0],"texture":0},"down":{"uv":[24,0,16,8],"texture":0}},"type":"cube","uuid":"7c76db23-25f3-7b95-ac9f-2e9bcf0f9759"},{"name":"body_outer","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-4,12,-2],"to":[4,24,2],"autouv":0,"color":5,"inflate":0.4,"origin":[0,0,0],"uv_offset":[40,16],"faces":{"north":{"uv":[44,20,52,32],"texture":0},"east":{"uv":[40,20,44,32],"texture":0},"south":{"uv":[56,20,64,32],"texture":0},"west":{"uv":[52,20,56,32],"texture":0},"up":{"uv":[52,20,44,16],"texture":0},"down":{"uv":[60,16,52,20],"texture":0}},"type":"cube","uuid":"94261ed0-a8a6-8d18-ac42-13127515d848"},{"name":"body_inner","box_uv":true,"render_order":"behind","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-4,12,-2],"to":[4,24,2],"autouv":0,"color":3,"inflate":0.3,"origin":[0,0,0],"uv_offset":[40,0],"faces":{"north":{"uv":[44,4,52,16],"texture":0},"east":{"uv":[40,4,44,16],"texture":0},"south":{"uv":[56,4,64,16],"texture":0},"west":{"uv":[52,4,56,16],"texture":0},"up":{"uv":[52,4,44,0],"texture":0},"down":{"uv":[60,0,52,4],"texture":0}},"type":"cube","uuid":"bd4844dd-2a0e-3f4e-fa0b-7da3d2887e40"},{"name":"left_sleeve","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-8,12,-2],"to":[-4,24,2],"autouv":0,"color":3,"mirror_uv":true,"inflate":0.3,"origin":[0,0,0],"uv_offset":[0,32],"faces":{"north":{"uv":[8,36,4,48],"texture":0},"east":{"uv":[12,36,8,48],"texture":0},"south":{"uv":[16,36,12,48],"texture":0},"west":{"uv":[4,36,0,48],"texture":0},"up":{"uv":[4,36,8,32],"texture":0},"down":{"uv":[8,32,12,36],"texture":0}},"type":"cube","uuid":"9c87cab3-03d4-97ee-21bd-9815d0e98d53"},{"name":"right_sleeve","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[4,12,-2],"to":[8,24,2],"autouv":0,"color":0,"inflate":0.3,"origin":[0,0,0],"uv_offset":[0,32],"faces":{"north":{"uv":[4,36,8,48],"texture":0},"east":{"uv":[0,36,4,48],"texture":0},"south":{"uv":[12,36,16,48],"texture":0},"west":{"uv":[8,36,12,48],"texture":0},"up":{"uv":[8,36,4,32],"texture":0},"down":{"uv":[12,32,8,36],"texture":0}},"type":"cube","uuid":"fd5e025b-d5f6-8bd3-d981-66783aa2a923"},{"name":"right_legging","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[0,0,-2],"to":[4,12,2],"autouv":0,"color":3,"inflate":0.35,"origin":[0,0,0],"uv_offset":[48,32],"faces":{"north":{"uv":[52,36,56,48],"texture":0},"east":{"uv":[48,36,52,48],"texture":0},"south":{"uv":[60,36,64,48],"texture":0},"west":{"uv":[56,36,60,48],"texture":0},"up":{"uv":[56,36,52,32],"texture":0},"down":{"uv":[60,32,56,36],"texture":0}},"type":"cube","uuid":"e035f1e5-f5da-d86a-efe6-d73b506ae82e"},{"name":"left_legging","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-4,0,-2],"to":[0,12,2],"autouv":0,"color":9,"mirror_uv":true,"inflate":0.35,"origin":[0,0,0],"uv_offset":[48,32],"faces":{"north":{"uv":[56,36,52,48],"texture":0},"east":{"uv":[60,36,56,48],"texture":0},"south":{"uv":[64,36,60,48],"texture":0},"west":{"uv":[52,36,48,48],"texture":0},"up":{"uv":[52,36,56,32],"texture":0},"down":{"uv":[56,32,60,36],"texture":0}},"type":"cube","uuid":"92e4165d-8268-5063-8211-7221aae1b76e"},{"name":"left_boot","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-4,0,-2],"to":[0,4,2],"autouv":0,"color":2,"inflate":0.3,"origin":[0,0,0],"uv_offset":[16,40],"faces":{"north":{"uv":[20,44,24,48],"texture":0},"east":{"uv":[16,44,20,48],"texture":0},"south":{"uv":[28,44,32,48],"texture":0},"west":{"uv":[24,44,28,48],"texture":0},"up":{"uv":[24,44,20,40],"texture":0},"down":{"uv":[28,40,24,44],"texture":0}},"type":"cube","uuid":"0c26f55d-2961-ea9c-ea83-843b23d37a98"},{"name":"right_boot","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[0,0,-2],"to":[4,4,2],"autouv":0,"color":3,"inflate":0.3,"origin":[0,0,0],"uv_offset":[16,40],"faces":{"north":{"uv":[20,44,24,48],"texture":0},"east":{"uv":[16,44,20,48],"texture":0},"south":{"uv":[28,44,32,48],"texture":0},"west":{"uv":[24,44,28,48],"texture":0},"up":{"uv":[24,44,20,40],"texture":0},"down":{"uv":[28,40,24,44],"texture":0}},"type":"cube","uuid":"3bb185dc-1abc-3fe5-b883-7af7889a4f3f"},{"name":"strap","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-0.2,11.95,-3],"to":[9.8,14.95,3],"autouv":0,"color":2,"rotation":[0,0,22.5],"origin":[0.75,1.75,0],"uv_offset":[0,48],"faces":{"north":{"uv":[6,54,16,57],"texture":0},"east":{"uv":[0,54,6,57],"texture":0},"south":{"uv":[22,54,32,57],"texture":0},"west":{"uv":[16,54,22,57],"texture":0},"up":{"uv":[16,54,6,48],"texture":0},"down":{"uv":[26,48,16,54],"texture":0}},"type":"cube","uuid":"5595171c-e809-03ca-68ed-7115d9ffbb94"},{"name":"buckle","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[1.95,14.1,-3],"to":[4.95,17.1,3],"autouv":0,"color":6,"inflate":0.1,"origin":[0.75,0,0],"uv_offset":[32,48],"faces":{"north":{"uv":[38,54,41,57],"texture":0},"east":{"uv":[32,54,38,57],"texture":0},"south":{"uv":[47,54,50,57],"texture":0},"west":{"uv":[41,54,47,57],"texture":0},"up":{"uv":[41,54,38,48],"texture":0},"down":{"uv":[44,48,41,54],"texture":0}},"type":"cube","uuid":"4cb47817-d5c8-81f7-ce53-eddcf011ee3e"},{"name":"right_horn","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[4,28.5,0],"to":[12,36.5,0],"autouv":0,"color":0,"mirror_uv":true,"rotation":[0,0,75],"origin":[5,32.5,0],"uv_offset":[24,0],"faces":{"north":{"uv":[32,0,24,8],"texture":0},"east":{"uv":[32,0,32,8],"texture":0},"south":{"uv":[40,0,32,8],"texture":0},"west":{"uv":[24,0,24,8],"texture":0},"up":{"uv":[24,0,32,0],"texture":0},"down":{"uv":[32,0,40,0],"texture":0}},"type":"cube","uuid":"00b324ac-7d37-b5d8-4201-5e85760400af"},{"name":"left_horn","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-12,28.6,0],"to":[-4,36.6,0],"autouv":0,"color":0,"rotation":[0,0,-75],"origin":[-5,32.6,0],"uv_offset":[24,0],"faces":{"north":{"uv":[24,0,32,8],"texture":0},"east":{"uv":[24,0,24,8],"texture":0},"south":{"uv":[32,0,40,8],"texture":0},"west":{"uv":[32,0,32,8],"texture":0},"up":{"uv":[32,0,24,0],"texture":0},"down":{"uv":[40,0,32,0],"texture":0}},"type":"cube","uuid":"a9e5e1e6-b585-094b-da8c-835678984610"}],"groups":[{"name":"head","uuid":"340a6871-310d-6a24-43ff-ddf85346d82f","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[-4,32,-4],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"body","uuid":"303b4664-b31a-5ba5-b6bf-ed9ee71370bb","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[-4,24,-2],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"rightArm","uuid":"d74e7c20-c22d-d9d4-9aef-4faded63fc4e","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[4,24,-2],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"leftArm","uuid":"63506f26-b3de-59cb-b312-386615c5bc0d","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[-8,24,-2],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"rightLeg","uuid":"e46d3e87-8f26-2f4d-963a-bdf55792cfa6","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[0,12,-2],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"leftLeg","uuid":"39fd2105-d958-5410-6032-afffb1ec9e1d","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[-4,12,-2],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"sash","uuid":"01148eb6-5484-1b29-ae31-deabde803a47","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[-5.45,13.2,-3],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":false,"primary_selected":false},{"name":"horns","uuid":"05a5b561-43ff-8683-4ce7-978731e9d8c5","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[5,32.5,0],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false}],"outliner":[{"uuid":"340a6871-310d-6a24-43ff-ddf85346d82f","isOpen":true,"children":[{"uuid":"05a5b561-43ff-8683-4ce7-978731e9d8c5","isOpen":true,"children":["00b324ac-7d37-b5d8-4201-5e85760400af","a9e5e1e6-b585-094b-da8c-835678984610"]},"7c76db23-25f3-7b95-ac9f-2e9bcf0f9759","bb31bdb7-b4f5-8fd6-0631-ad789263fce7"]},{"uuid":"303b4664-b31a-5ba5-b6bf-ed9ee71370bb","isOpen":true,"children":["bd4844dd-2a0e-3f4e-fa0b-7da3d2887e40","94261ed0-a8a6-8d18-ac42-13127515d848",{"uuid":"01148eb6-5484-1b29-ae31-deabde803a47","isOpen":false,"children":["5595171c-e809-03ca-68ed-7115d9ffbb94","4cb47817-d5c8-81f7-ce53-eddcf011ee3e"]}]},{"uuid":"d74e7c20-c22d-d9d4-9aef-4faded63fc4e","isOpen":true,"children":["fd5e025b-d5f6-8bd3-d981-66783aa2a923"]},{"uuid":"63506f26-b3de-59cb-b312-386615c5bc0d","isOpen":true,"children":["9c87cab3-03d4-97ee-21bd-9815d0e98d53"]},{"uuid":"e46d3e87-8f26-2f4d-963a-bdf55792cfa6","isOpen":true,"children":["e035f1e5-f5da-d86a-efe6-d73b506ae82e","3bb185dc-1abc-3fe5-b883-7af7889a4f3f"]},{"uuid":"39fd2105-d958-5410-6032-afffb1ec9e1d","isOpen":true,"children":["92e4165d-8268-5063-8211-7221aae1b76e","0c26f55d-2961-ea9c-ea83-843b23d37a98"]}],"textures":[{"name":"","path":"","folder":"","namespace":"","id":"0","group":"","scope":0,"width":64,"height":64,"uv_width":64,"uv_height":64,"particle":false,"use_as_default":false,"layers_enabled":false,"sync_to_project":"","file_format":"png","render_mode":"default","render_sides":"auto","wrap_mode":"limited","pbr_channel":"color","fps":7,"frame_time":1,"frame_order_type":"loop","frame_order":"","frame_interpolate":false,"visible":true,"internal":true,"saved":false,"uuid":"af3aae18-9f98-d4de-7b0f-c58cd9965743","source":"data:image/png;base64,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"}]} \ No newline at end of file From 7548abc735545f4837c8caaafb72cf479ea6828d Mon Sep 17 00:00:00 2001 From: Robotgiggle <88736742+Robotgiggle@users.noreply.github.com> Date: Mon, 24 Aug 2026 22:34:21 -0400 Subject: [PATCH 09/14] Get variant-cycling working --- .../hexcasting/models/item/robes/boots.json | 22 ++++++++++- .../item/robes/{mask.json => boots_1.json} | 2 +- .../hexcasting/models/item/robes/boots_2.json | 2 +- .../hexcasting/models/item/robes/hood.json | 26 +++++++++++++ .../hexcasting/models/item/robes/hood_1.json | 6 +++ .../hexcasting/models/item/robes/hood_2.json | 6 +++ .../hexcasting/models/item/robes/legs.json | 22 ++++++++++- .../hexcasting/models/item/robes/legs_1.json | 6 +++ .../hexcasting/models/item/robes/legs_2.json | 6 +++ .../hexcasting/models/item/robes/tunic.json | 22 ++++++++++- .../hexcasting/models/item/robes/tunic_1.json | 6 +++ .../hexcasting/models/item/robes/tunic_2.json | 6 +++ .../client/RegisterClientStuff.java | 4 ++ .../client/model/HexModelLayers.java | 8 +++- .../client/model/HexRobesModel.java | 6 +-- .../common/items/armor/ItemRobes.java | 35 +++++++++--------- .../hexcasting/common/lib/HexItems.java | 2 +- .../hexcasting/textures/armor/robes0.png | Bin 0 -> 1429 bytes .../hexcasting/textures/armor/robes1.png | Bin 1429 -> 1493 bytes .../hexcasting/textures/armor/robes2.png | Bin 1493 -> 1749 bytes .../hexcasting/textures/armor/robes3.png | Bin 1749 -> 0 bytes .../item/robes/{boots1.png => 0_boots.png} | Bin .../item/robes/{helmet1.png => 0_hood.png} | Bin .../item/robes/{leggings1.png => 0_legs.png} | Bin .../robes/{chestplate1.png => 0_tunic.png} | Bin .../item/robes/{boots2.png => 1_boots.png} | Bin .../item/robes/{helmet2.png => 1_hood.png} | Bin .../item/robes/{leggings2.png => 1_legs.png} | Bin .../robes/{chestplate2.png => 1_tunic.png} | Bin .../item/robes/{boots3.png => 2_boots.png} | Bin .../item/robes/{helmet3.png => 2_hood.png} | Bin .../item/robes/{leggings3.png => 2_legs.png} | Bin .../robes/{chestplate3.png => 2_tunic.png} | Bin .../fabric/client/HexRobesRenderer.java | 4 +- .../hexcasting/models/item/robes/boots.json | 22 ++++++++++- .../hexcasting/models/item/robes/boots_1.json | 6 +++ .../hexcasting/models/item/robes/boots_2.json | 6 +++ .../hexcasting/models/item/robes/hood.json | 26 +++++++++++++ .../hexcasting/models/item/robes/hood_1.json | 6 +++ .../hexcasting/models/item/robes/hood_2.json | 6 +++ .../hexcasting/models/item/robes/legs.json | 22 ++++++++++- .../hexcasting/models/item/robes/legs_1.json | 6 +++ .../hexcasting/models/item/robes/legs_2.json | 6 +++ .../hexcasting/models/item/robes/tunic.json | 22 ++++++++++- .../hexcasting/models/item/robes/tunic_1.json | 6 +++ .../hexcasting/models/item/robes/tunic_2.json | 6 +++ .../forge/ForgeHexClientInitializer.java | 13 ++++--- .../forge/datagen/xplat/HexItemModels.java | 22 ++++++++--- art/robes/Robes0.bbmodel | 1 + art/robes/Robes1.bbmodel | 2 +- art/robes/Robes2.bbmodel | 2 +- art/robes/Robes3.bbmodel | 1 - 52 files changed, 325 insertions(+), 47 deletions(-) rename Common/src/generated/resources/assets/hexcasting/models/item/robes/{mask.json => boots_1.json} (57%) rename Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/mask.json => Common/src/generated/resources/assets/hexcasting/models/item/robes/boots_2.json (57%) create mode 100644 Common/src/generated/resources/assets/hexcasting/models/item/robes/hood.json create mode 100644 Common/src/generated/resources/assets/hexcasting/models/item/robes/hood_1.json create mode 100644 Common/src/generated/resources/assets/hexcasting/models/item/robes/hood_2.json create mode 100644 Common/src/generated/resources/assets/hexcasting/models/item/robes/legs_1.json create mode 100644 Common/src/generated/resources/assets/hexcasting/models/item/robes/legs_2.json create mode 100644 Common/src/generated/resources/assets/hexcasting/models/item/robes/tunic_1.json create mode 100644 Common/src/generated/resources/assets/hexcasting/models/item/robes/tunic_2.json create mode 100644 Common/src/main/resources/assets/hexcasting/textures/armor/robes0.png delete mode 100644 Common/src/main/resources/assets/hexcasting/textures/armor/robes3.png rename Common/src/main/resources/assets/hexcasting/textures/item/robes/{boots1.png => 0_boots.png} (100%) rename Common/src/main/resources/assets/hexcasting/textures/item/robes/{helmet1.png => 0_hood.png} (100%) rename Common/src/main/resources/assets/hexcasting/textures/item/robes/{leggings1.png => 0_legs.png} (100%) rename Common/src/main/resources/assets/hexcasting/textures/item/robes/{chestplate1.png => 0_tunic.png} (100%) rename Common/src/main/resources/assets/hexcasting/textures/item/robes/{boots2.png => 1_boots.png} (100%) rename Common/src/main/resources/assets/hexcasting/textures/item/robes/{helmet2.png => 1_hood.png} (100%) rename Common/src/main/resources/assets/hexcasting/textures/item/robes/{leggings2.png => 1_legs.png} (100%) rename Common/src/main/resources/assets/hexcasting/textures/item/robes/{chestplate2.png => 1_tunic.png} (100%) rename Common/src/main/resources/assets/hexcasting/textures/item/robes/{boots3.png => 2_boots.png} (100%) rename Common/src/main/resources/assets/hexcasting/textures/item/robes/{helmet3.png => 2_hood.png} (100%) rename Common/src/main/resources/assets/hexcasting/textures/item/robes/{leggings3.png => 2_legs.png} (100%) rename Common/src/main/resources/assets/hexcasting/textures/item/robes/{chestplate3.png => 2_tunic.png} (100%) create mode 100644 Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/boots_1.json create mode 100644 Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/boots_2.json create mode 100644 Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/hood.json create mode 100644 Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/hood_1.json create mode 100644 Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/hood_2.json create mode 100644 Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/legs_1.json create mode 100644 Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/legs_2.json create mode 100644 Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/tunic_1.json create mode 100644 Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/tunic_2.json create mode 100644 art/robes/Robes0.bbmodel delete mode 100644 art/robes/Robes3.bbmodel diff --git a/Common/src/generated/resources/assets/hexcasting/models/item/robes/boots.json b/Common/src/generated/resources/assets/hexcasting/models/item/robes/boots.json index d872efd81d..264198cc15 100644 --- a/Common/src/generated/resources/assets/hexcasting/models/item/robes/boots.json +++ b/Common/src/generated/resources/assets/hexcasting/models/item/robes/boots.json @@ -1,6 +1,26 @@ { "parent": "minecraft:item/generated", + "overrides": [ + { + "model": "hexcasting:item/robes/boots", + "predicate": { + "hexcasting:variant": 0.0 + } + }, + { + "model": "hexcasting:item/robes/boots_1", + "predicate": { + "hexcasting:variant": 1.0 + } + }, + { + "model": "hexcasting:item/robes/boots_2", + "predicate": { + "hexcasting:variant": 2.0 + } + } + ], "textures": { - "layer0": "hexcasting:item/robes/boots1" + "layer0": "hexcasting:item/robes/0_boots" } } \ No newline at end of file diff --git a/Common/src/generated/resources/assets/hexcasting/models/item/robes/mask.json b/Common/src/generated/resources/assets/hexcasting/models/item/robes/boots_1.json similarity index 57% rename from Common/src/generated/resources/assets/hexcasting/models/item/robes/mask.json rename to Common/src/generated/resources/assets/hexcasting/models/item/robes/boots_1.json index 4465daf8f4..fe6a221473 100644 --- a/Common/src/generated/resources/assets/hexcasting/models/item/robes/mask.json +++ b/Common/src/generated/resources/assets/hexcasting/models/item/robes/boots_1.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "hexcasting:item/robes/helmet1" + "layer0": "hexcasting:item/robes/1_boots" } } \ No newline at end of file diff --git a/Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/mask.json b/Common/src/generated/resources/assets/hexcasting/models/item/robes/boots_2.json similarity index 57% rename from Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/mask.json rename to Common/src/generated/resources/assets/hexcasting/models/item/robes/boots_2.json index 4465daf8f4..27a0c192a7 100644 --- a/Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/mask.json +++ b/Common/src/generated/resources/assets/hexcasting/models/item/robes/boots_2.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "hexcasting:item/robes/helmet1" + "layer0": "hexcasting:item/robes/2_boots" } } \ No newline at end of file diff --git a/Common/src/generated/resources/assets/hexcasting/models/item/robes/hood.json b/Common/src/generated/resources/assets/hexcasting/models/item/robes/hood.json new file mode 100644 index 0000000000..d2218f4994 --- /dev/null +++ b/Common/src/generated/resources/assets/hexcasting/models/item/robes/hood.json @@ -0,0 +1,26 @@ +{ + "parent": "minecraft:item/generated", + "overrides": [ + { + "model": "hexcasting:item/robes/hood", + "predicate": { + "hexcasting:variant": 0.0 + } + }, + { + "model": "hexcasting:item/robes/hood_1", + "predicate": { + "hexcasting:variant": 1.0 + } + }, + { + "model": "hexcasting:item/robes/hood_2", + "predicate": { + "hexcasting:variant": 2.0 + } + } + ], + "textures": { + "layer0": "hexcasting:item/robes/0_hood" + } +} \ No newline at end of file diff --git a/Common/src/generated/resources/assets/hexcasting/models/item/robes/hood_1.json b/Common/src/generated/resources/assets/hexcasting/models/item/robes/hood_1.json new file mode 100644 index 0000000000..4631bfe281 --- /dev/null +++ b/Common/src/generated/resources/assets/hexcasting/models/item/robes/hood_1.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "hexcasting:item/robes/1_hood" + } +} \ No newline at end of file diff --git a/Common/src/generated/resources/assets/hexcasting/models/item/robes/hood_2.json b/Common/src/generated/resources/assets/hexcasting/models/item/robes/hood_2.json new file mode 100644 index 0000000000..0761f55547 --- /dev/null +++ b/Common/src/generated/resources/assets/hexcasting/models/item/robes/hood_2.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "hexcasting:item/robes/2_hood" + } +} \ No newline at end of file diff --git a/Common/src/generated/resources/assets/hexcasting/models/item/robes/legs.json b/Common/src/generated/resources/assets/hexcasting/models/item/robes/legs.json index fb41385983..03d57e0536 100644 --- a/Common/src/generated/resources/assets/hexcasting/models/item/robes/legs.json +++ b/Common/src/generated/resources/assets/hexcasting/models/item/robes/legs.json @@ -1,6 +1,26 @@ { "parent": "minecraft:item/generated", + "overrides": [ + { + "model": "hexcasting:item/robes/legs", + "predicate": { + "hexcasting:variant": 0.0 + } + }, + { + "model": "hexcasting:item/robes/legs_1", + "predicate": { + "hexcasting:variant": 1.0 + } + }, + { + "model": "hexcasting:item/robes/legs_2", + "predicate": { + "hexcasting:variant": 2.0 + } + } + ], "textures": { - "layer0": "hexcasting:item/robes/leggings1" + "layer0": "hexcasting:item/robes/0_legs" } } \ No newline at end of file diff --git a/Common/src/generated/resources/assets/hexcasting/models/item/robes/legs_1.json b/Common/src/generated/resources/assets/hexcasting/models/item/robes/legs_1.json new file mode 100644 index 0000000000..93054eafd4 --- /dev/null +++ b/Common/src/generated/resources/assets/hexcasting/models/item/robes/legs_1.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "hexcasting:item/robes/1_legs" + } +} \ No newline at end of file diff --git a/Common/src/generated/resources/assets/hexcasting/models/item/robes/legs_2.json b/Common/src/generated/resources/assets/hexcasting/models/item/robes/legs_2.json new file mode 100644 index 0000000000..b5667a0aec --- /dev/null +++ b/Common/src/generated/resources/assets/hexcasting/models/item/robes/legs_2.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "hexcasting:item/robes/2_legs" + } +} \ No newline at end of file diff --git a/Common/src/generated/resources/assets/hexcasting/models/item/robes/tunic.json b/Common/src/generated/resources/assets/hexcasting/models/item/robes/tunic.json index 4c9f5cb987..da671641b8 100644 --- a/Common/src/generated/resources/assets/hexcasting/models/item/robes/tunic.json +++ b/Common/src/generated/resources/assets/hexcasting/models/item/robes/tunic.json @@ -1,6 +1,26 @@ { "parent": "minecraft:item/generated", + "overrides": [ + { + "model": "hexcasting:item/robes/tunic", + "predicate": { + "hexcasting:variant": 0.0 + } + }, + { + "model": "hexcasting:item/robes/tunic_1", + "predicate": { + "hexcasting:variant": 1.0 + } + }, + { + "model": "hexcasting:item/robes/tunic_2", + "predicate": { + "hexcasting:variant": 2.0 + } + } + ], "textures": { - "layer0": "hexcasting:item/robes/chestplate1" + "layer0": "hexcasting:item/robes/0_tunic" } } \ No newline at end of file diff --git a/Common/src/generated/resources/assets/hexcasting/models/item/robes/tunic_1.json b/Common/src/generated/resources/assets/hexcasting/models/item/robes/tunic_1.json new file mode 100644 index 0000000000..797dbbc608 --- /dev/null +++ b/Common/src/generated/resources/assets/hexcasting/models/item/robes/tunic_1.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "hexcasting:item/robes/1_tunic" + } +} \ No newline at end of file diff --git a/Common/src/generated/resources/assets/hexcasting/models/item/robes/tunic_2.json b/Common/src/generated/resources/assets/hexcasting/models/item/robes/tunic_2.json new file mode 100644 index 0000000000..a665bce0cb --- /dev/null +++ b/Common/src/generated/resources/assets/hexcasting/models/item/robes/tunic_2.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "hexcasting:item/robes/2_tunic" + } +} \ No newline at end of file diff --git a/Common/src/main/java/at/petrak/hexcasting/client/RegisterClientStuff.java b/Common/src/main/java/at/petrak/hexcasting/client/RegisterClientStuff.java index 0fcaac0f46..70b12989bc 100644 --- a/Common/src/main/java/at/petrak/hexcasting/client/RegisterClientStuff.java +++ b/Common/src/main/java/at/petrak/hexcasting/client/RegisterClientStuff.java @@ -67,6 +67,10 @@ public static void init() { registerVariantOverrides(HexItems.CYPHER.get(), HexItems.CYPHER.get()::getVariant); registerVariantOverrides(HexItems.TRINKET.get(), HexItems.TRINKET.get()::getVariant); registerVariantOverrides(HexItems.ARTIFACT.get(), HexItems.ARTIFACT.get()::getVariant); + registerVariantOverrides(HexItems.ROBES_HOOD.get(), HexItems.ROBES_HOOD.get()::getVariant); + registerVariantOverrides(HexItems.ROBES_TUNIC.get(), HexItems.ROBES_TUNIC.get()::getVariant); + registerVariantOverrides(HexItems.ROBES_LEGS.get(), HexItems.ROBES_LEGS.get()::getVariant); + registerVariantOverrides(HexItems.ROBES_BOOTS.get(), HexItems.ROBES_BOOTS.get()::getVariant); IClientXplatAbstractions.INSTANCE.registerItemProperty(HexItems.THOUGHT_KNOT.get(), ItemThoughtKnot.WRITTEN_PRED, (stack, level, holder, holderID) -> { if (stack.has(HexDataComponents.IOTA_HOLDER_IOTA.get())) { diff --git a/Common/src/main/java/at/petrak/hexcasting/client/model/HexModelLayers.java b/Common/src/main/java/at/petrak/hexcasting/client/model/HexModelLayers.java index d220649bce..eeeee86310 100644 --- a/Common/src/main/java/at/petrak/hexcasting/client/model/HexModelLayers.java +++ b/Common/src/main/java/at/petrak/hexcasting/client/model/HexModelLayers.java @@ -13,7 +13,9 @@ public class HexModelLayers { public static final ModelLayerLocation ALTIORA = make("altiora"); - public static final ModelLayerLocation ROBES = make("robes"); + public static final ModelLayerLocation ROBES_0 = make("robes_0"); + public static final ModelLayerLocation ROBES_1 = make("robes_1"); + public static final ModelLayerLocation ROBES_2 = make("robes_2"); private static ModelLayerLocation make(String name) { return make(name, "main"); @@ -29,6 +31,8 @@ private static ModelLayerLocation make(String name, String layer) { // https://github.com/VazkiiMods/Botania/blob/1.19.x/Xplat/src/main/java/vazkii/botania/client/model/BotaniaLayerDefinitions.java public static void init(BiConsumer> consumer) { consumer.accept(ALTIORA, ElytraModel::createLayer); - consumer.accept(ROBES, HexRobesModel::variant1); + consumer.accept(ROBES_0, HexRobesModel::variant0); + consumer.accept(ROBES_1, HexRobesModel::variant1); + consumer.accept(ROBES_2, HexRobesModel::variant2); } } diff --git a/Common/src/main/java/at/petrak/hexcasting/client/model/HexRobesModel.java b/Common/src/main/java/at/petrak/hexcasting/client/model/HexRobesModel.java index 98e1bb615f..978bb6666c 100644 --- a/Common/src/main/java/at/petrak/hexcasting/client/model/HexRobesModel.java +++ b/Common/src/main/java/at/petrak/hexcasting/client/model/HexRobesModel.java @@ -40,7 +40,7 @@ public HexRobesModel(ModelPart root, EquipmentSlot slot) { this.leftLeg = root.getChild("left_leg"); } - public static LayerDefinition variant1() { + public static LayerDefinition variant0() { MeshDefinition meshdef = new MeshDefinition(); PartDefinition root = meshdef.getRoot(); @@ -112,7 +112,7 @@ public static LayerDefinition variant1() { return LayerDefinition.create(meshdef, 64, 64); } - public static LayerDefinition variant2() { + public static LayerDefinition variant1() { MeshDefinition meshdef = new MeshDefinition(); PartDefinition root = meshdef.getRoot(); @@ -188,7 +188,7 @@ public static LayerDefinition variant2() { return LayerDefinition.create(meshdef, 64, 64); } - public static LayerDefinition variant3() { + public static LayerDefinition variant2() { MeshDefinition meshdef = new MeshDefinition(); PartDefinition root = meshdef.getRoot(); diff --git a/Common/src/main/java/at/petrak/hexcasting/common/items/armor/ItemRobes.java b/Common/src/main/java/at/petrak/hexcasting/common/items/armor/ItemRobes.java index ad8e020d75..d828024cfc 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/items/armor/ItemRobes.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/items/armor/ItemRobes.java @@ -2,18 +2,15 @@ import at.petrak.hexcasting.annotations.SoftImplement; import at.petrak.hexcasting.api.HexAPI; +import at.petrak.hexcasting.api.item.VariantItem; import at.petrak.hexcasting.client.model.HexModelLayers; import at.petrak.hexcasting.client.model.HexRobesModel; import net.minecraft.client.Minecraft; -import net.minecraft.client.model.HumanoidModel; import net.minecraft.client.model.geom.EntityModelSet; -import net.minecraft.client.model.geom.ModelPart; import net.minecraft.core.Holder; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EquipmentSlot; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ArmorItem; import net.minecraft.world.item.ArmorMaterial; import net.minecraft.world.item.ItemStack; @@ -21,33 +18,37 @@ /** * To get the armor model in; - * On forge: cursed self-mixin - * On fabric: hook in ClientInit + * On forge: client item extension in ForgeHexClientInitializer (line 161) + * On fabric: custom HexRobesRenderer set up from FabricHexClientInitializer (line 60) */ -public class ItemRobes extends ArmorItem { +public class ItemRobes extends ArmorItem implements VariantItem { public final ArmorItem.Type type; - private @Nullable HexRobesModel model; + private @Nullable HexRobesModel[] models; public ItemRobes(ArmorItem.Type type, Properties properties) { super(Holder.direct(HexAPI.instance().robesMaterial()), type, properties); this.type = type; } - // TODO: return a collection holding all the variants for the given slot - public static HexRobesModel provideArmorModelForSlot(EquipmentSlot slot) { + public static HexRobesModel[] provideArmorModelsForSlot(EquipmentSlot slot) { EntityModelSet models = Minecraft.getInstance().getEntityModels(); - ModelPart root = models.bakeLayer(HexModelLayers.ROBES); - return new HexRobesModel(root, slot); + return new HexRobesModel[] { + new HexRobesModel(models.bakeLayer(HexModelLayers.ROBES_0), slot), + new HexRobesModel(models.bakeLayer(HexModelLayers.ROBES_1), slot), + new HexRobesModel(models.bakeLayer(HexModelLayers.ROBES_2), slot) + }; } - public HexRobesModel getArmorModel() { - if (model == null) model = provideArmorModelForSlot(getEquipmentSlot()); - return model; + public HexRobesModel[] getArmorModels() { + if (models == null) models = provideArmorModelsForSlot(getEquipmentSlot()); + return models; } @SoftImplement("IItemExtension") public ResourceLocation getArmorTexture(ItemStack stack, Entity entity, EquipmentSlot slot, ArmorMaterial.Layer layer, boolean innerModel) { - // TODO: detect variant based on itemstack data - return HexAPI.modLoc("textures/armor/robes1.png"); + return HexAPI.modLoc("textures/armor/robes"+getVariant(stack)+".png"); } + + @Override + public int numVariants() { return 3; } } diff --git a/Common/src/main/java/at/petrak/hexcasting/common/lib/HexItems.java b/Common/src/main/java/at/petrak/hexcasting/common/lib/HexItems.java index 5009bdaa4c..16d4c1cdfa 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/lib/HexItems.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/lib/HexItems.java @@ -76,7 +76,7 @@ public static void registerItemsForCreativeTab(ResourceKey tabK IXplatAbstractions.INSTANCE.addEquipSlotFabric(EquipmentSlot.HEAD) .stacksTo(1).attributes(ItemLens.MODIFIERS))); - public static final Supplier ROBES_MASK = make("robes/mask", () -> new ItemRobes(ArmorItem.Type.HELMET, unstackable())); + public static final Supplier ROBES_HOOD = make("robes/hood", () -> new ItemRobes(ArmorItem.Type.HELMET, unstackable())); public static final Supplier ROBES_TUNIC = make("robes/tunic", () -> new ItemRobes(ArmorItem.Type.CHESTPLATE, unstackable())); public static final Supplier ROBES_LEGS = make("robes/legs", () -> new ItemRobes(ArmorItem.Type.LEGGINGS, unstackable())); public static final Supplier ROBES_BOOTS = make("robes/boots", () -> new ItemRobes(ArmorItem.Type.BOOTS, unstackable())); diff --git a/Common/src/main/resources/assets/hexcasting/textures/armor/robes0.png b/Common/src/main/resources/assets/hexcasting/textures/armor/robes0.png new file mode 100644 index 0000000000000000000000000000000000000000..2218a6e628f0aab87649a57ee478783f85f5719d GIT binary patch literal 1429 zcmV;G1#0?@ZUZ9pto;YeP>B3x!;BFpT+-OK%~EL182i7=)7D zIu;5YI~4Egz{)6egpG7-OGj8tqXt`+q8L=?&}fJ3r##6|(v$xr^3VrDC( z-p3v3Q-Axyp+oZ44_{zU*I^traP7m1jumvHt5y5DX;v-P5lypd4aiqQkC__C;PRy* z`}5(k4gfHks!%^m;`nV1No^O2gFo?W>3&Dv<&mGdA&p(VF6n9&s!{=PYWVBFf3xUw zJCIQT9L9?F6O#4rAM2#Kgm-&2=&zolv44WUwomZOV*}s3IFW)vE;W$xRdiQ>?3m%5 zCqG+5nJduMD)Lh|LeGA;Q$U&=xoI69>oA&XOQ*v`X8$jNMu z8%@>GPHkc36X$A41nJlTyvi!l7lzB1h8%^ASJd47qVmb5=@skSCmS6p=w;}aQwsp# zo5RcH#kNzBj1YA+Pd+I+*dIIJBa<5k0H{g@*YfkiiuQtu)JNRwu<}AFuvK0~<>hmz zN(HJ?LFMIhY?W8T=o?uQz-g8A`Xg@6e$BlW`ED=RGhT78!^$V_|NfKj7gGZnH0pJ1 zl~h(Y)gMPbH4v%%mj;|egp%h?e+^?-yxE1Fa?d}(q7jgha0UdS4J(tRMw9bdo zCqFWV{UZ&~34Sw>ox9c^C52lYh-p^cE+X!@*~X7@EZX96R@ZM){UY+L@xbW}`)$Sm=Z%+QsUWS* ztXrdl>9Z7IjnPcgF(_|0=eNV-IYu#RP>dR$z1g#`MHn4SBR?``|7Lz<%r?GQDoC1X z1}@b+hZjo)Y5zz&pCZUJRov$c{4 z@-8a}IExY)ol9jqE`~vMg7j1jXS+zcaU(#qNO|?~W}L!4O!$k!i-MrpCz2#g`RR^= zAb7LSD&b{px1Dentyx!IE!Xo&##anTEQFCI05CXelJaX^^US-U5>DB)QI`{`bw8{YndoprXK>wus%h;sM? zr)xhM%o3GJjJ=L>@zYEbOVcYBr2(4`Wc0%19g7^|yAz}+paVv~&OSXa*x0@+u?0{w zP5%cY?7cGp+=q|!<|mQKjf39*rFVk~U9I9Pd}h(3_V??i(D?1MOv0|Ywc42z>meJj=MuVE~+RJLXXBobDnOkX$#Jri;0PeiHV7c jiHV7ciHV7ci4y+;a70dcW5=|m00000NkvXXu0mjfs#n28 literal 0 HcmV?d00001 diff --git a/Common/src/main/resources/assets/hexcasting/textures/armor/robes1.png b/Common/src/main/resources/assets/hexcasting/textures/armor/robes1.png index 2218a6e628f0aab87649a57ee478783f85f5719d..cb621b6072c69b7ae7516f645ef3e41c0f831d39 100644 GIT binary patch delta 1475 zcmV;!1w8td3)KsdB!8SqL_t(|ob8%lXdFcx$G;m65)aJfE|-vAN@6u)1BOU#A&5kR z`qB_k8dAiRzLRNgyH(rFn}eilT7D7cB`Iq)-i(Mw8Nzc!${>cYAxc z32ZM9&HB*JI=ef&J9~SVTx36Ru)Fiyo%#Ld_h)8rg>T;aN`Kqhks+%pL?wqzQ9^QK zR={H>1|~K5VC=>#h$lKAiD?|~IxV>0;Y{-rCw+}4|6t89hS0e$Mvy8LpzQ3T_o+_b z12j{RvifmJ&1$qEN@`YX2)BCfGtv-8Q+-rFFYXlp07^;XYNx5&dyqp&-auXEPy9MR z=gYb*diu@^$A7y{3k4|)NlXKHr1(GUziH&W9Eef?49fDh69nzy-`aj@0uNI;6z<=~ z?$$p3THePmOA0<&+ZWtiF47Qp9Oy=2$uPrrZ~dS}Z684#!71Dc3%0=#K5HX*{vJC256_~yM1E-;26VK7v3*B1c?&7hGxl!cssju_jAM( z9RL7HOry7FlzX7npfmC;^Vq9AR|qUFOd)-56_S{SB&LzRw~EDuDKF!#S?YjCS<>!D z7#jYFd4J4vZ#76M_nF6DE=*xJpLbQ#?b&`Q z?iCCxzH;QbLV%uer)$;1JaCrM=5}6rE&~uRAn?roQNhswN=ed7#^~sE?B?^>&F3*X zdfn1qP0am}WBR(eombwq2J^fR5S1MBdLq)|tAEbBjpu{;3jlzR2j}#5ul;ea0{|cv z4g&yWRn@QADeu-+3H)rQ30wvsikr`ALmUSEXWjz~d<=w(aUj4(ppy)JN@Q2&X!`na^dG zK{`&IlGOP8C4sf@V9mJQ47l-H_lsz6i~#_)c4Pq1&-*@n2C0!GEK(dEhj|UFQV=s4xELxcX~ridzi1vYkSvC?O;& zIo(Z(5fYIWPuZHt(ryn_W;aOxRbQ^m(9`c|nWFW*MRH?Su-rI3IHS2$fLg}9Zg3mF zr3xJO7Wbg3`OQ$Zu^8b0u*dg;C4WBXZ-$(Rg~MoXjA8i8^EH(t=(22Ap&WOETRXB| zE}Up@j2Y@|t>7hx$*O8KfZOh@T-k$yF1@jE*f87Xb5Y6JC&8ooE|694on)CyVG;&* z?&QV&-{>AQ)aCD2Z&clDc=j+vH>L*=*S6d5(=xRP&kEFaJ8YK>Yc=^1l7AbsLZ&FW zzRDwC#M&Bw&#i-%nP{pI&?C(-p3v3Q-Axyp+oZ44_{zU*I^traP7m1jumvH zt5y5DX;v-P5lypd4aiqQkC__C;PRy*`}5(k4gfHks!%^m;`nV1No^O2gFo?W>3&Dv z<&mGdA&p(VE`RB26{=DJaBBGLzkjpnb32ex0361O_7jrz?jP%0BDsC=sOx#(ZOF-NjvGzY(N1k)<$n|BYDom?*a5uCD$*B*%a?{6 zg^X9!-2I~R$))KP>)R(A9VzH#=$BIq0N|U$%jLzkQ;>`hbu>>tDLU96JKrOd8wUWW zN(I;Q^TLYuf{D~e-0QINLMgCSUPa~QbErxMs!~Da<#TM6SHtKVSrWi$mGt@}Zq9zq zy%zayFMrrGUU9F($|vss{*&()Qv(?^>UC_DSD~v_=xP;P~34Sw>ox9c^C5 z2lYh-p^cE+X!@*~X7@EZX96R@ZMB(Ptnt9<4Et@y0OyUDVyPgl&8%CagXyyrV2#mC(=jM-H|Mv*<2gn# zYEXWXv|cSbr)=nrQ|u)jWq6O9g5FNIRb*$TL>7KFn^; z*@cUiyV=b-iBg9qg75*eLKWjij0L3M)kR19ak zNV;(&K(t7C_3>t$!ahv+i^7Y7pxGyqBux3~j)EX~v(GBwWo);da2BmuTOW~Pn}1+K z6#$;S*%Jc#4U}O8Pul_AH;Qw&M z4MX3b1v;h00Z}{S_nMacVBZ5o0Y24-u{D~b$_;>>wus%h;sM?r)xhM%o3GJjJ=L>@zYEbOVcYB zr2(4`Wc0%19g7^|yAz}+paVv~&OSXa*x0@+u?0{wP5%cY?7cGp+=q|!=6ffR$&G{F z|D|_>30FZXT_)mKOF|nc2~U6XNz1el|@>Xack{U z0KkvMr;fWrJT9sz5<-v0M01{Qt!WF+oQsKxiHV7ciHV7ciHV7ciHQ>b0&ql5cw@)3 Qr2qf`07*qoM6N<$g4*Z97XSbN diff --git a/Common/src/main/resources/assets/hexcasting/textures/armor/robes2.png b/Common/src/main/resources/assets/hexcasting/textures/armor/robes2.png index cb621b6072c69b7ae7516f645ef3e41c0f831d39..cde5477699d03369796f62af66074ff33f16d147 100644 GIT binary patch delta 1734 zcmV;%208iF3)KyfBYy^*Nkl2VNZ((%cYx;gBzRijN=I?iqUjyAO~t43sx3IP%g# zWr0+&bnhp#JH8+BM1S3VMB3x%+ShHJZ)_U?fby0uMQ72r{dgUrQW|afzi@YE%9nLT zSY1h)Th)T~8-ExYMm*7v_V9jR#wMiz*p!u}6EyS5zvj-?IG$wIVWfUXWo-w4FYMsA z`7*wIu%mgoT%s^Ja$4$Ehe$Ll2mr-u6^CML?%jV zJYAMQG(Iw6etqwzs!TRG8R7h~vjAWzJbif?z_M*_;WST>0V&}&2wwcsA@JwYw^r@e zb6Ff29DkD*Gzc7w3{q8T{;)~5h~GjG0EcORZf zkbhTRmKGG;j9$-xJhRncy|^}d-Ijw&)hgCDO8|g(Uw#L_{4);#RvXXn1>dW|puvu6 zsao~)NS@ydd)@#n*rduD!pSHsf2mrvek?o<;1zR;NRK1kjV24#O5()N8i~~@#MgP1 z#74Z)@IhhcfOsCk-b1Et%Z7nyu$%^v+J9|H(5+*BLNh)xVT$#3Ay;0v8Jwq) zylk73C+5oQy9N-s2(^i3b5~|BYEBtfq$CNKEAO^7B1A}DuL)Tq(o@5ei1a+0GAI(R zQOX0rLT1@I?(MQK(()U+_0Q7i{vi@DR|ejA(e7GaWryVh>@!4CIuYsdt*pq6-G9Q! zZEeEy39Eo?l5(Pn1bAxX-JdG>lGdnoMhJivANL<+YP`S;qR}Ua;*KDz0J*TJjd_c0 zzTSPvk-xVqE*$;*hK>-q7i)w>q(>=R6EExbDoVP6eO2#-v@x%xjd@4<$yYuyMTWVP zzNOW4er@!+$tvFH^?cAcd-Rg6GJoA%_`+5GnjFyVCGNAvbF~%-0yPF`#u~qwsEH4D z&yX9U;V}9-qd4{bhfU29wB-f>47~sVP&u!e39fCH(AOFDG(cZx)OrZfOiW*1Ml_rO zz?NkBbK&SspT2D_7x$>-~j};dB9%E6Mj8FXaKJ;P;r0Nx__*SQ&$fw zjW~ZUG{A+KbK3Oj+os41X!KQIKm>(AJOFU^g1wUb2!VJ2Aoha2Hu^w-9sulm0imAJ z7sWh1Cv3zz!>3vWk%6?5feP5!h#wPD^vQbE%utvp@QRUP_b(BJwVT8 z5l{46BTnZ7L&H`sVB-^j?ZXJxQ|j5uLWX7yUQZ}_!O;M;DN>XOMS@UUJkf8<6?_QE zf{e>=&ucU^r)=+(*oa2L^uKo4(LnWFPdq%lc2nM$!}#WoAx{fVD1iz?T5#A3E~>NB;NwB;Euo)%hYp@kM& cXh8}80d^p}iCwYZ;{X5v07*qoM6N<$g4GI9vj6}9 delta 1476 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 diff --git a/Common/src/main/resources/assets/hexcasting/textures/item/robes/boots1.png b/Common/src/main/resources/assets/hexcasting/textures/item/robes/0_boots.png similarity index 100% rename from Common/src/main/resources/assets/hexcasting/textures/item/robes/boots1.png rename to Common/src/main/resources/assets/hexcasting/textures/item/robes/0_boots.png diff --git a/Common/src/main/resources/assets/hexcasting/textures/item/robes/helmet1.png b/Common/src/main/resources/assets/hexcasting/textures/item/robes/0_hood.png similarity index 100% rename from Common/src/main/resources/assets/hexcasting/textures/item/robes/helmet1.png rename to Common/src/main/resources/assets/hexcasting/textures/item/robes/0_hood.png diff --git a/Common/src/main/resources/assets/hexcasting/textures/item/robes/leggings1.png b/Common/src/main/resources/assets/hexcasting/textures/item/robes/0_legs.png similarity index 100% rename from Common/src/main/resources/assets/hexcasting/textures/item/robes/leggings1.png rename to Common/src/main/resources/assets/hexcasting/textures/item/robes/0_legs.png diff --git a/Common/src/main/resources/assets/hexcasting/textures/item/robes/chestplate1.png b/Common/src/main/resources/assets/hexcasting/textures/item/robes/0_tunic.png similarity index 100% rename from Common/src/main/resources/assets/hexcasting/textures/item/robes/chestplate1.png rename to Common/src/main/resources/assets/hexcasting/textures/item/robes/0_tunic.png diff --git a/Common/src/main/resources/assets/hexcasting/textures/item/robes/boots2.png b/Common/src/main/resources/assets/hexcasting/textures/item/robes/1_boots.png similarity index 100% rename from Common/src/main/resources/assets/hexcasting/textures/item/robes/boots2.png rename to Common/src/main/resources/assets/hexcasting/textures/item/robes/1_boots.png diff --git a/Common/src/main/resources/assets/hexcasting/textures/item/robes/helmet2.png b/Common/src/main/resources/assets/hexcasting/textures/item/robes/1_hood.png similarity index 100% rename from Common/src/main/resources/assets/hexcasting/textures/item/robes/helmet2.png rename to Common/src/main/resources/assets/hexcasting/textures/item/robes/1_hood.png diff --git a/Common/src/main/resources/assets/hexcasting/textures/item/robes/leggings2.png b/Common/src/main/resources/assets/hexcasting/textures/item/robes/1_legs.png similarity index 100% rename from Common/src/main/resources/assets/hexcasting/textures/item/robes/leggings2.png rename to Common/src/main/resources/assets/hexcasting/textures/item/robes/1_legs.png diff --git a/Common/src/main/resources/assets/hexcasting/textures/item/robes/chestplate2.png b/Common/src/main/resources/assets/hexcasting/textures/item/robes/1_tunic.png similarity index 100% rename from Common/src/main/resources/assets/hexcasting/textures/item/robes/chestplate2.png rename to Common/src/main/resources/assets/hexcasting/textures/item/robes/1_tunic.png diff --git a/Common/src/main/resources/assets/hexcasting/textures/item/robes/boots3.png b/Common/src/main/resources/assets/hexcasting/textures/item/robes/2_boots.png similarity index 100% rename from Common/src/main/resources/assets/hexcasting/textures/item/robes/boots3.png rename to Common/src/main/resources/assets/hexcasting/textures/item/robes/2_boots.png diff --git a/Common/src/main/resources/assets/hexcasting/textures/item/robes/helmet3.png b/Common/src/main/resources/assets/hexcasting/textures/item/robes/2_hood.png similarity index 100% rename from Common/src/main/resources/assets/hexcasting/textures/item/robes/helmet3.png rename to Common/src/main/resources/assets/hexcasting/textures/item/robes/2_hood.png diff --git a/Common/src/main/resources/assets/hexcasting/textures/item/robes/leggings3.png b/Common/src/main/resources/assets/hexcasting/textures/item/robes/2_legs.png similarity index 100% rename from Common/src/main/resources/assets/hexcasting/textures/item/robes/leggings3.png rename to Common/src/main/resources/assets/hexcasting/textures/item/robes/2_legs.png diff --git a/Common/src/main/resources/assets/hexcasting/textures/item/robes/chestplate3.png b/Common/src/main/resources/assets/hexcasting/textures/item/robes/2_tunic.png similarity index 100% rename from Common/src/main/resources/assets/hexcasting/textures/item/robes/chestplate3.png rename to Common/src/main/resources/assets/hexcasting/textures/item/robes/2_tunic.png diff --git a/Fabric/src/main/java/at/petrak/hexcasting/fabric/client/HexRobesRenderer.java b/Fabric/src/main/java/at/petrak/hexcasting/fabric/client/HexRobesRenderer.java index dfaa3c91eb..ae9737132b 100644 --- a/Fabric/src/main/java/at/petrak/hexcasting/fabric/client/HexRobesRenderer.java +++ b/Fabric/src/main/java/at/petrak/hexcasting/fabric/client/HexRobesRenderer.java @@ -11,7 +11,7 @@ public class HexRobesRenderer { public static final List ROBE_ITEMS = List.of( - HexItems.ROBES_MASK.get(), + HexItems.ROBES_HOOD.get(), HexItems.ROBES_TUNIC.get(), HexItems.ROBES_LEGS.get(), HexItems.ROBES_BOOTS.get() @@ -21,7 +21,7 @@ public static void init() { ArmorRenderer renderer = (matrices, vertexConsumers, stack, entity, slot, light, contextModel) -> { ItemRobes armor = (ItemRobes) stack.getItem(); - var model = armor.getArmorModel(); + var model = armor.getArmorModels()[armor.getVariant(stack)]; var texture = armor.getArmorTexture(stack, entity, slot, HexAPI.instance().robesMaterial().layers().getFirst(), false); contextModel.copyPropertiesTo(model); diff --git a/Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/boots.json b/Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/boots.json index d872efd81d..264198cc15 100644 --- a/Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/boots.json +++ b/Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/boots.json @@ -1,6 +1,26 @@ { "parent": "minecraft:item/generated", + "overrides": [ + { + "model": "hexcasting:item/robes/boots", + "predicate": { + "hexcasting:variant": 0.0 + } + }, + { + "model": "hexcasting:item/robes/boots_1", + "predicate": { + "hexcasting:variant": 1.0 + } + }, + { + "model": "hexcasting:item/robes/boots_2", + "predicate": { + "hexcasting:variant": 2.0 + } + } + ], "textures": { - "layer0": "hexcasting:item/robes/boots1" + "layer0": "hexcasting:item/robes/0_boots" } } \ No newline at end of file diff --git a/Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/boots_1.json b/Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/boots_1.json new file mode 100644 index 0000000000..fe6a221473 --- /dev/null +++ b/Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/boots_1.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "hexcasting:item/robes/1_boots" + } +} \ No newline at end of file diff --git a/Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/boots_2.json b/Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/boots_2.json new file mode 100644 index 0000000000..27a0c192a7 --- /dev/null +++ b/Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/boots_2.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "hexcasting:item/robes/2_boots" + } +} \ No newline at end of file diff --git a/Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/hood.json b/Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/hood.json new file mode 100644 index 0000000000..d2218f4994 --- /dev/null +++ b/Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/hood.json @@ -0,0 +1,26 @@ +{ + "parent": "minecraft:item/generated", + "overrides": [ + { + "model": "hexcasting:item/robes/hood", + "predicate": { + "hexcasting:variant": 0.0 + } + }, + { + "model": "hexcasting:item/robes/hood_1", + "predicate": { + "hexcasting:variant": 1.0 + } + }, + { + "model": "hexcasting:item/robes/hood_2", + "predicate": { + "hexcasting:variant": 2.0 + } + } + ], + "textures": { + "layer0": "hexcasting:item/robes/0_hood" + } +} \ No newline at end of file diff --git a/Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/hood_1.json b/Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/hood_1.json new file mode 100644 index 0000000000..4631bfe281 --- /dev/null +++ b/Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/hood_1.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "hexcasting:item/robes/1_hood" + } +} \ No newline at end of file diff --git a/Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/hood_2.json b/Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/hood_2.json new file mode 100644 index 0000000000..0761f55547 --- /dev/null +++ b/Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/hood_2.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "hexcasting:item/robes/2_hood" + } +} \ No newline at end of file diff --git a/Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/legs.json b/Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/legs.json index fb41385983..03d57e0536 100644 --- a/Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/legs.json +++ b/Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/legs.json @@ -1,6 +1,26 @@ { "parent": "minecraft:item/generated", + "overrides": [ + { + "model": "hexcasting:item/robes/legs", + "predicate": { + "hexcasting:variant": 0.0 + } + }, + { + "model": "hexcasting:item/robes/legs_1", + "predicate": { + "hexcasting:variant": 1.0 + } + }, + { + "model": "hexcasting:item/robes/legs_2", + "predicate": { + "hexcasting:variant": 2.0 + } + } + ], "textures": { - "layer0": "hexcasting:item/robes/leggings1" + "layer0": "hexcasting:item/robes/0_legs" } } \ No newline at end of file diff --git a/Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/legs_1.json b/Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/legs_1.json new file mode 100644 index 0000000000..93054eafd4 --- /dev/null +++ b/Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/legs_1.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "hexcasting:item/robes/1_legs" + } +} \ No newline at end of file diff --git a/Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/legs_2.json b/Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/legs_2.json new file mode 100644 index 0000000000..b5667a0aec --- /dev/null +++ b/Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/legs_2.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "hexcasting:item/robes/2_legs" + } +} \ No newline at end of file diff --git a/Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/tunic.json b/Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/tunic.json index 4c9f5cb987..da671641b8 100644 --- a/Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/tunic.json +++ b/Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/tunic.json @@ -1,6 +1,26 @@ { "parent": "minecraft:item/generated", + "overrides": [ + { + "model": "hexcasting:item/robes/tunic", + "predicate": { + "hexcasting:variant": 0.0 + } + }, + { + "model": "hexcasting:item/robes/tunic_1", + "predicate": { + "hexcasting:variant": 1.0 + } + }, + { + "model": "hexcasting:item/robes/tunic_2", + "predicate": { + "hexcasting:variant": 2.0 + } + } + ], "textures": { - "layer0": "hexcasting:item/robes/chestplate1" + "layer0": "hexcasting:item/robes/0_tunic" } } \ No newline at end of file diff --git a/Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/tunic_1.json b/Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/tunic_1.json new file mode 100644 index 0000000000..797dbbc608 --- /dev/null +++ b/Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/tunic_1.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "hexcasting:item/robes/1_tunic" + } +} \ No newline at end of file diff --git a/Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/tunic_2.json b/Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/tunic_2.json new file mode 100644 index 0000000000..a665bce0cb --- /dev/null +++ b/Neoforge/src/generated/resources/assets/hexcasting/models/item/robes/tunic_2.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "hexcasting:item/robes/2_tunic" + } +} \ No newline at end of file diff --git a/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexClientInitializer.java b/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexClientInitializer.java index ab718355c5..342a95abf0 100644 --- a/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexClientInitializer.java +++ b/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexClientInitializer.java @@ -16,7 +16,6 @@ import at.petrak.hexcasting.common.misc.PatternTooltip; import at.petrak.hexcasting.forge.lib.ForgeHexAttachments; import at.petrak.hexcasting.interop.HexInterop; -import it.unimi.dsi.fastutil.objects.Object2ObjectArrayMap; import net.minecraft.client.Minecraft; import net.minecraft.client.color.block.BlockColors; import net.minecraft.client.color.item.ItemColors; @@ -41,7 +40,6 @@ import net.neoforged.neoforge.common.NeoForge; import java.io.IOException; -import java.util.Map; import java.util.function.Function; // This is Java because I can't kotlin-fu some of the consumers @@ -160,13 +158,18 @@ public static void addPlayerLayers(EntityRenderersEvent.AddLayers evt) { @SubscribeEvent public static void registerArmorRenderer(RegisterClientExtensionsEvent evt) { evt.registerItem(new IClientItemExtensions() { - private final Map> MODELS = new Object2ObjectArrayMap<>(); + //private final Map[]> MODEL_SETS = new Object2ObjectArrayMap<>(); @Override public HumanoidModel getHumanoidArmorModel(LivingEntity livingEntity, ItemStack itemStack, EquipmentSlot equipmentSlot, HumanoidModel original) { - return MODELS.computeIfAbsent(equipmentSlot, ItemRobes::provideArmorModelForSlot); + ItemRobes armor = (ItemRobes) itemStack.getItem(); + return armor.getArmorModels()[armor.getVariant(itemStack)]; + +// var variant = itemStack.get(HexDataComponents.ITEM_VARIANT.get()); +// var modelSet = MODEL_SETS.computeIfAbsent(equipmentSlot, ItemRobes::provideArmorModelsForSlot); +// return variant != null ? modelSet[variant] : modelSet[0]; } - }, HexItems.ROBES_MASK.get(), HexItems.ROBES_TUNIC.get(), HexItems.ROBES_LEGS.get(), HexItems.ROBES_BOOTS.get()); + }, HexItems.ROBES_HOOD.get(), HexItems.ROBES_TUNIC.get(), HexItems.ROBES_LEGS.get(), HexItems.ROBES_BOOTS.get()); } @SubscribeEvent diff --git a/Neoforge/src/main/java/at/petrak/hexcasting/forge/datagen/xplat/HexItemModels.java b/Neoforge/src/main/java/at/petrak/hexcasting/forge/datagen/xplat/HexItemModels.java index a4bd0770e0..439b3d6d19 100644 --- a/Neoforge/src/main/java/at/petrak/hexcasting/forge/datagen/xplat/HexItemModels.java +++ b/Neoforge/src/main/java/at/petrak/hexcasting/forge/datagen/xplat/HexItemModels.java @@ -80,10 +80,10 @@ protected void registerModels() { .translation(-2.5f, 0f, -8f) .scale(0.4f); - buildRobes(HexItems.ROBES_MASK.get(), "helmet", 1); - buildRobes(HexItems.ROBES_TUNIC.get(), "chestplate", 1); - buildRobes(HexItems.ROBES_LEGS.get(), "leggings", 1); - buildRobes(HexItems.ROBES_BOOTS.get(), "boots", 1); + buildRobes(HexItems.ROBES_HOOD.get(), "hood", HexItems.ROBES_HOOD.get().numVariants()); + buildRobes(HexItems.ROBES_TUNIC.get(), "tunic", HexItems.ROBES_HOOD.get().numVariants()); + buildRobes(HexItems.ROBES_LEGS.get(), "legs", HexItems.ROBES_HOOD.get().numVariants()); + buildRobes(HexItems.ROBES_BOOTS.get(), "boots", HexItems.ROBES_HOOD.get().numVariants()); singleTexture("old_staff", ResourceLocation.withDefaultNamespace("item/handheld_rod"), "layer0", modLoc("item/staff/old")); @@ -283,8 +283,18 @@ private void buildStaff(Item item, String name) { private void buildRobes(Item item, String type, int numVariants) { // TODO: actually handle the variants - singleTexture("item/" + getPath(item), ResourceLocation.withDefaultNamespace("item/generated"), - "layer0", modLoc("item/robes/"+type+"1")); +// singleTexture("item/" + getPath(item), ResourceLocation.withDefaultNamespace("item/generated"), +// "layer0", modLoc("item/robes/1_"+type)); + var name = "item/" + getPath(item); + var builder = getBuilder(name); + for (int i = 0; i < numVariants; i++) { + var parent_tag = "item/generated"; + var model = i == 0 ? singleTexture(name, ResourceLocation.withDefaultNamespace(parent_tag), + "layer0", modLoc("item/robes/" + i + "_" + type)) + : withExistingParent(name + "_" + i, ResourceLocation.withDefaultNamespace(parent_tag)) + .texture("layer0", modLoc("item/robes/" + i + "_" + type)); + builder.override().predicate(ItemFocus.VARIANT_PRED, i).model(model).end(); + } } private void buildPackagedSpell(Item item, String stub, int numVariants) { diff --git a/art/robes/Robes0.bbmodel b/art/robes/Robes0.bbmodel new file mode 100644 index 0000000000..61a422e741 --- /dev/null +++ b/art/robes/Robes0.bbmodel @@ -0,0 +1 @@ +{"meta":{"format_version":"5.0","model_format":"modded_entity","box_uv":true},"name":"Robes1","model_identifier":"","modded_entity_entity_class":"","modded_entity_version":"1.17","modded_entity_flip_y":true,"visible_box":[1,1,0],"variable_placeholders":"","multi_file_ruleset":"","variable_placeholder_buttons":[],"timeline_setups":[],"unhandled_root_fields":{},"resolution":{"width":64,"height":64},"elements":[{"name":"hood_outer","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-4,24,-4],"to":[4,32,4],"autouv":0,"color":7,"inflate":0.4,"origin":[0,0,0],"uv_offset":[0,16],"faces":{"north":{"uv":[8,24,16,32],"texture":0},"east":{"uv":[0,24,8,32],"texture":0},"south":{"uv":[24,24,32,32],"texture":0},"west":{"uv":[16,24,24,32],"texture":0},"up":{"uv":[16,24,8,16],"texture":0},"down":{"uv":[24,16,16,24],"texture":0}},"type":"cube","uuid":"1581b57e-00c2-c3a2-d822-b969220a28d4"},{"name":"hood_inner","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-4,24,-4],"to":[4,32,4],"autouv":0,"color":3,"inflate":0.3,"origin":[0,0,0],"faces":{"north":{"uv":[8,8,16,16],"texture":0},"east":{"uv":[0,8,8,16],"texture":0},"south":{"uv":[24,8,32,16],"texture":0},"west":{"uv":[16,8,24,16],"texture":0},"up":{"uv":[16,8,8,0],"texture":0},"down":{"uv":[24,0,16,8],"texture":0}},"type":"cube","uuid":"c5b38b99-6a56-d9ff-e64c-7b6f865f9a78"},{"name":"left_horn","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-11.7,28.2,0],"to":[-3.7,32.2,0],"autouv":0,"color":2,"inflate":0.3,"origin":[0,0,0],"uv_offset":[24,0],"faces":{"north":{"uv":[24,0,32,4],"texture":0},"east":{"uv":[24,0,24,4],"texture":0},"south":{"uv":[32,0,40,4],"texture":0},"west":{"uv":[32,0,32,4],"texture":0},"up":{"uv":[32,0,24,0],"texture":0},"down":{"uv":[40,0,32,0],"texture":0}},"type":"cube","uuid":"6964045e-8723-0987-f243-5ea5477fe7de"},{"name":"right_horn","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[3.8,28.2,0],"to":[11.8,32.2,0],"autouv":0,"color":0,"mirror_uv":true,"inflate":0.3,"origin":[0,0,0],"uv_offset":[24,0],"faces":{"north":{"uv":[32,0,24,4],"texture":0},"east":{"uv":[32,0,32,4],"texture":0},"south":{"uv":[40,0,32,4],"texture":0},"west":{"uv":[24,0,24,4],"texture":0},"up":{"uv":[24,0,32,0],"texture":0},"down":{"uv":[32,0,40,0],"texture":0}},"type":"cube","uuid":"f33f09f2-5156-ad5f-6a83-b6ec43dd94ba"},{"name":"tunic_outer","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-4,12,-2],"to":[4,24,2],"autouv":0,"color":4,"inflate":0.4,"origin":[0,0,0],"uv_offset":[40,16],"faces":{"north":{"uv":[44,20,52,32],"texture":0},"east":{"uv":[40,20,44,32],"texture":0},"south":{"uv":[56,20,64,32],"texture":0},"west":{"uv":[52,20,56,32],"texture":0},"up":{"uv":[52,20,44,16],"texture":0},"down":{"uv":[60,16,52,20],"texture":0}},"type":"cube","uuid":"e8531e9d-18f6-891f-90e4-7521fdc4d333"},{"name":"tunic_inner","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-4,12,-2],"to":[4,24,2],"autouv":0,"color":7,"inflate":0.3,"origin":[0,0,0],"uv_offset":[40,0],"faces":{"north":{"uv":[44,4,52,16],"texture":0},"east":{"uv":[40,4,44,16],"texture":0},"south":{"uv":[56,4,64,16],"texture":0},"west":{"uv":[52,4,56,16],"texture":0},"up":{"uv":[52,4,44,0],"texture":0},"down":{"uv":[60,0,52,4],"texture":0}},"type":"cube","uuid":"39cd0047-8c4e-0c56-9ba0-6821e5288d85"},{"name":"right_sleeve","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[4,12,-2],"to":[8,24,2],"autouv":0,"color":3,"inflate":0.3,"origin":[0,0,0],"uv_offset":[0,32],"faces":{"north":{"uv":[4,36,8,48],"texture":0},"east":{"uv":[0,36,4,48],"texture":0},"south":{"uv":[12,36,16,48],"texture":0},"west":{"uv":[8,36,12,48],"texture":0},"up":{"uv":[8,36,4,32],"texture":0},"down":{"uv":[12,32,8,36],"texture":0}},"type":"cube","uuid":"980d2769-4452-dfb8-65e0-279fe928b4dc"},{"name":"left_sleeve","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-8,12,-2],"to":[-4,24,2],"autouv":0,"color":0,"mirror_uv":true,"inflate":0.3,"origin":[0,0,0],"uv_offset":[0,32],"faces":{"north":{"uv":[8,36,4,48],"texture":0},"east":{"uv":[12,36,8,48],"texture":0},"south":{"uv":[16,36,12,48],"texture":0},"west":{"uv":[4,36,0,48],"texture":0},"up":{"uv":[4,36,8,32],"texture":0},"down":{"uv":[8,32,12,36],"texture":0}},"type":"cube","uuid":"a67ab72a-fddc-6238-2450-0efdf132c8f1"},{"name":"right_skirt","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[1.75,0.25,-2],"to":[5.75,12.25,2],"autouv":0,"color":1,"mirror_uv":true,"inflate":0.4,"rotation":[0,0,7.5],"origin":[1.75,0.25,0],"uv_offset":[48,32],"faces":{"north":{"uv":[56,36,52,48],"texture":0},"east":{"uv":[60,36,56,48],"texture":0},"south":{"uv":[64,36,60,48],"texture":0},"west":{"uv":[52,36,48,48],"texture":0},"up":{"uv":[52,36,56,32],"texture":0},"down":{"uv":[56,32,60,36],"texture":0}},"type":"cube","uuid":"9f17843d-d8f7-54ed-8955-46c9f9b16c58"},{"name":"left_skirt","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-5.85,0.25,-2],"to":[-1.85,12.25,2],"autouv":0,"color":6,"inflate":0.4,"rotation":[0,0,-7.5],"origin":[-1.75,-0.25,0],"uv_offset":[48,32],"faces":{"north":{"uv":[52,36,56,48],"texture":0},"east":{"uv":[48,36,52,48],"texture":0},"south":{"uv":[60,36,64,48],"texture":0},"west":{"uv":[56,36,60,48],"texture":0},"up":{"uv":[56,36,52,32],"texture":0},"down":{"uv":[60,32,56,36],"texture":0}},"type":"cube","uuid":"948db43e-cb45-4d54-b8c9-2fff5114297d"},{"name":"left_boot","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-4,0,-2],"to":[0,3,2],"autouv":0,"color":9,"inflate":0.3,"origin":[0,0,0],"uv_offset":[16,41],"faces":{"north":{"uv":[20,45,24,48],"texture":0},"east":{"uv":[16,45,20,48],"texture":0},"south":{"uv":[28,45,32,48],"texture":0},"west":{"uv":[24,45,28,48],"texture":0},"up":{"uv":[24,45,20,41],"texture":0},"down":{"uv":[28,41,24,45],"texture":0}},"type":"cube","uuid":"79498393-90f7-57dc-503c-6574ada461b9"},{"name":"right_boot","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[0,0,-2],"to":[4,3,2],"autouv":0,"color":2,"inflate":0.3,"origin":[0,0,0],"uv_offset":[16,41],"faces":{"north":{"uv":[20,45,24,48],"texture":0},"east":{"uv":[16,45,20,48],"texture":0},"south":{"uv":[28,45,32,48],"texture":0},"west":{"uv":[24,45,28,48],"texture":0},"up":{"uv":[24,45,20,41],"texture":0},"down":{"uv":[28,41,24,45],"texture":0}},"type":"cube","uuid":"ef919b63-e2e6-f0f2-daa2-f3617e632db6"}],"groups":[{"name":"head","uuid":"fd15bc83-0616-6b91-4dc0-205078c28696","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[-4,32,-4],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"horns","uuid":"392fe1f0-1ca6-16cb-3fdf-f4df1acbea50","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[4.8,32.2,0],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":false,"primary_selected":false},{"name":"body","uuid":"3ce8c80e-9c6b-c2c7-d890-65103951659b","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[-4,24,-2],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"leftArm","uuid":"8b7e8f66-6842-18bf-5ec6-ed8186b30dcc","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[4,24,-2],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"rightArm","uuid":"3f6f3a5d-40f0-79e0-f4c7-8260f3f17f66","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[-8,24,-2],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"rightLeg","uuid":"ad7f6d7b-a515-346a-234d-92719a8f6f03","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[2,12.25,-2],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"leftLeg","uuid":"89bec69e-bfd8-c0e8-d1df-5948a74a5ae4","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[-4.1,12.5,-2],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false}],"outliner":[{"uuid":"fd15bc83-0616-6b91-4dc0-205078c28696","isOpen":true,"children":["c5b38b99-6a56-d9ff-e64c-7b6f865f9a78","1581b57e-00c2-c3a2-d822-b969220a28d4",{"uuid":"392fe1f0-1ca6-16cb-3fdf-f4df1acbea50","isOpen":false,"children":["6964045e-8723-0987-f243-5ea5477fe7de","f33f09f2-5156-ad5f-6a83-b6ec43dd94ba"]}]},{"uuid":"3ce8c80e-9c6b-c2c7-d890-65103951659b","isOpen":true,"children":["39cd0047-8c4e-0c56-9ba0-6821e5288d85","e8531e9d-18f6-891f-90e4-7521fdc4d333"]},{"uuid":"3f6f3a5d-40f0-79e0-f4c7-8260f3f17f66","isOpen":true,"children":["980d2769-4452-dfb8-65e0-279fe928b4dc"]},{"uuid":"8b7e8f66-6842-18bf-5ec6-ed8186b30dcc","isOpen":true,"children":["a67ab72a-fddc-6238-2450-0efdf132c8f1"]},{"uuid":"ad7f6d7b-a515-346a-234d-92719a8f6f03","isOpen":true,"children":["9f17843d-d8f7-54ed-8955-46c9f9b16c58","ef919b63-e2e6-f0f2-daa2-f3617e632db6"]},{"uuid":"89bec69e-bfd8-c0e8-d1df-5948a74a5ae4","isOpen":true,"children":["948db43e-cb45-4d54-b8c9-2fff5114297d","79498393-90f7-57dc-503c-6574ada461b9"]}],"textures":[{"name":"","path":"","folder":"","namespace":"","id":"0","group":"","scope":0,"width":64,"height":64,"uv_width":64,"uv_height":64,"particle":false,"use_as_default":false,"layers_enabled":false,"sync_to_project":"","file_format":"png","render_mode":"default","render_sides":"auto","wrap_mode":"limited","pbr_channel":"color","fps":7,"frame_time":1,"frame_order_type":"loop","frame_order":"","frame_interpolate":false,"visible":true,"internal":true,"saved":false,"uuid":"76798d81-bebb-9cf7-cb53-4b3c6019c51a","source":"data:image/png;base64,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"}]} \ No newline at end of file diff --git a/art/robes/Robes1.bbmodel b/art/robes/Robes1.bbmodel index 61a422e741..690b827aa2 100644 --- a/art/robes/Robes1.bbmodel +++ b/art/robes/Robes1.bbmodel @@ -1 +1 @@ -{"meta":{"format_version":"5.0","model_format":"modded_entity","box_uv":true},"name":"Robes1","model_identifier":"","modded_entity_entity_class":"","modded_entity_version":"1.17","modded_entity_flip_y":true,"visible_box":[1,1,0],"variable_placeholders":"","multi_file_ruleset":"","variable_placeholder_buttons":[],"timeline_setups":[],"unhandled_root_fields":{},"resolution":{"width":64,"height":64},"elements":[{"name":"hood_outer","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-4,24,-4],"to":[4,32,4],"autouv":0,"color":7,"inflate":0.4,"origin":[0,0,0],"uv_offset":[0,16],"faces":{"north":{"uv":[8,24,16,32],"texture":0},"east":{"uv":[0,24,8,32],"texture":0},"south":{"uv":[24,24,32,32],"texture":0},"west":{"uv":[16,24,24,32],"texture":0},"up":{"uv":[16,24,8,16],"texture":0},"down":{"uv":[24,16,16,24],"texture":0}},"type":"cube","uuid":"1581b57e-00c2-c3a2-d822-b969220a28d4"},{"name":"hood_inner","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-4,24,-4],"to":[4,32,4],"autouv":0,"color":3,"inflate":0.3,"origin":[0,0,0],"faces":{"north":{"uv":[8,8,16,16],"texture":0},"east":{"uv":[0,8,8,16],"texture":0},"south":{"uv":[24,8,32,16],"texture":0},"west":{"uv":[16,8,24,16],"texture":0},"up":{"uv":[16,8,8,0],"texture":0},"down":{"uv":[24,0,16,8],"texture":0}},"type":"cube","uuid":"c5b38b99-6a56-d9ff-e64c-7b6f865f9a78"},{"name":"left_horn","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-11.7,28.2,0],"to":[-3.7,32.2,0],"autouv":0,"color":2,"inflate":0.3,"origin":[0,0,0],"uv_offset":[24,0],"faces":{"north":{"uv":[24,0,32,4],"texture":0},"east":{"uv":[24,0,24,4],"texture":0},"south":{"uv":[32,0,40,4],"texture":0},"west":{"uv":[32,0,32,4],"texture":0},"up":{"uv":[32,0,24,0],"texture":0},"down":{"uv":[40,0,32,0],"texture":0}},"type":"cube","uuid":"6964045e-8723-0987-f243-5ea5477fe7de"},{"name":"right_horn","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[3.8,28.2,0],"to":[11.8,32.2,0],"autouv":0,"color":0,"mirror_uv":true,"inflate":0.3,"origin":[0,0,0],"uv_offset":[24,0],"faces":{"north":{"uv":[32,0,24,4],"texture":0},"east":{"uv":[32,0,32,4],"texture":0},"south":{"uv":[40,0,32,4],"texture":0},"west":{"uv":[24,0,24,4],"texture":0},"up":{"uv":[24,0,32,0],"texture":0},"down":{"uv":[32,0,40,0],"texture":0}},"type":"cube","uuid":"f33f09f2-5156-ad5f-6a83-b6ec43dd94ba"},{"name":"tunic_outer","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-4,12,-2],"to":[4,24,2],"autouv":0,"color":4,"inflate":0.4,"origin":[0,0,0],"uv_offset":[40,16],"faces":{"north":{"uv":[44,20,52,32],"texture":0},"east":{"uv":[40,20,44,32],"texture":0},"south":{"uv":[56,20,64,32],"texture":0},"west":{"uv":[52,20,56,32],"texture":0},"up":{"uv":[52,20,44,16],"texture":0},"down":{"uv":[60,16,52,20],"texture":0}},"type":"cube","uuid":"e8531e9d-18f6-891f-90e4-7521fdc4d333"},{"name":"tunic_inner","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-4,12,-2],"to":[4,24,2],"autouv":0,"color":7,"inflate":0.3,"origin":[0,0,0],"uv_offset":[40,0],"faces":{"north":{"uv":[44,4,52,16],"texture":0},"east":{"uv":[40,4,44,16],"texture":0},"south":{"uv":[56,4,64,16],"texture":0},"west":{"uv":[52,4,56,16],"texture":0},"up":{"uv":[52,4,44,0],"texture":0},"down":{"uv":[60,0,52,4],"texture":0}},"type":"cube","uuid":"39cd0047-8c4e-0c56-9ba0-6821e5288d85"},{"name":"right_sleeve","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[4,12,-2],"to":[8,24,2],"autouv":0,"color":3,"inflate":0.3,"origin":[0,0,0],"uv_offset":[0,32],"faces":{"north":{"uv":[4,36,8,48],"texture":0},"east":{"uv":[0,36,4,48],"texture":0},"south":{"uv":[12,36,16,48],"texture":0},"west":{"uv":[8,36,12,48],"texture":0},"up":{"uv":[8,36,4,32],"texture":0},"down":{"uv":[12,32,8,36],"texture":0}},"type":"cube","uuid":"980d2769-4452-dfb8-65e0-279fe928b4dc"},{"name":"left_sleeve","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-8,12,-2],"to":[-4,24,2],"autouv":0,"color":0,"mirror_uv":true,"inflate":0.3,"origin":[0,0,0],"uv_offset":[0,32],"faces":{"north":{"uv":[8,36,4,48],"texture":0},"east":{"uv":[12,36,8,48],"texture":0},"south":{"uv":[16,36,12,48],"texture":0},"west":{"uv":[4,36,0,48],"texture":0},"up":{"uv":[4,36,8,32],"texture":0},"down":{"uv":[8,32,12,36],"texture":0}},"type":"cube","uuid":"a67ab72a-fddc-6238-2450-0efdf132c8f1"},{"name":"right_skirt","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[1.75,0.25,-2],"to":[5.75,12.25,2],"autouv":0,"color":1,"mirror_uv":true,"inflate":0.4,"rotation":[0,0,7.5],"origin":[1.75,0.25,0],"uv_offset":[48,32],"faces":{"north":{"uv":[56,36,52,48],"texture":0},"east":{"uv":[60,36,56,48],"texture":0},"south":{"uv":[64,36,60,48],"texture":0},"west":{"uv":[52,36,48,48],"texture":0},"up":{"uv":[52,36,56,32],"texture":0},"down":{"uv":[56,32,60,36],"texture":0}},"type":"cube","uuid":"9f17843d-d8f7-54ed-8955-46c9f9b16c58"},{"name":"left_skirt","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-5.85,0.25,-2],"to":[-1.85,12.25,2],"autouv":0,"color":6,"inflate":0.4,"rotation":[0,0,-7.5],"origin":[-1.75,-0.25,0],"uv_offset":[48,32],"faces":{"north":{"uv":[52,36,56,48],"texture":0},"east":{"uv":[48,36,52,48],"texture":0},"south":{"uv":[60,36,64,48],"texture":0},"west":{"uv":[56,36,60,48],"texture":0},"up":{"uv":[56,36,52,32],"texture":0},"down":{"uv":[60,32,56,36],"texture":0}},"type":"cube","uuid":"948db43e-cb45-4d54-b8c9-2fff5114297d"},{"name":"left_boot","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-4,0,-2],"to":[0,3,2],"autouv":0,"color":9,"inflate":0.3,"origin":[0,0,0],"uv_offset":[16,41],"faces":{"north":{"uv":[20,45,24,48],"texture":0},"east":{"uv":[16,45,20,48],"texture":0},"south":{"uv":[28,45,32,48],"texture":0},"west":{"uv":[24,45,28,48],"texture":0},"up":{"uv":[24,45,20,41],"texture":0},"down":{"uv":[28,41,24,45],"texture":0}},"type":"cube","uuid":"79498393-90f7-57dc-503c-6574ada461b9"},{"name":"right_boot","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[0,0,-2],"to":[4,3,2],"autouv":0,"color":2,"inflate":0.3,"origin":[0,0,0],"uv_offset":[16,41],"faces":{"north":{"uv":[20,45,24,48],"texture":0},"east":{"uv":[16,45,20,48],"texture":0},"south":{"uv":[28,45,32,48],"texture":0},"west":{"uv":[24,45,28,48],"texture":0},"up":{"uv":[24,45,20,41],"texture":0},"down":{"uv":[28,41,24,45],"texture":0}},"type":"cube","uuid":"ef919b63-e2e6-f0f2-daa2-f3617e632db6"}],"groups":[{"name":"head","uuid":"fd15bc83-0616-6b91-4dc0-205078c28696","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[-4,32,-4],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"horns","uuid":"392fe1f0-1ca6-16cb-3fdf-f4df1acbea50","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[4.8,32.2,0],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":false,"primary_selected":false},{"name":"body","uuid":"3ce8c80e-9c6b-c2c7-d890-65103951659b","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[-4,24,-2],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"leftArm","uuid":"8b7e8f66-6842-18bf-5ec6-ed8186b30dcc","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[4,24,-2],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"rightArm","uuid":"3f6f3a5d-40f0-79e0-f4c7-8260f3f17f66","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[-8,24,-2],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"rightLeg","uuid":"ad7f6d7b-a515-346a-234d-92719a8f6f03","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[2,12.25,-2],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"leftLeg","uuid":"89bec69e-bfd8-c0e8-d1df-5948a74a5ae4","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[-4.1,12.5,-2],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false}],"outliner":[{"uuid":"fd15bc83-0616-6b91-4dc0-205078c28696","isOpen":true,"children":["c5b38b99-6a56-d9ff-e64c-7b6f865f9a78","1581b57e-00c2-c3a2-d822-b969220a28d4",{"uuid":"392fe1f0-1ca6-16cb-3fdf-f4df1acbea50","isOpen":false,"children":["6964045e-8723-0987-f243-5ea5477fe7de","f33f09f2-5156-ad5f-6a83-b6ec43dd94ba"]}]},{"uuid":"3ce8c80e-9c6b-c2c7-d890-65103951659b","isOpen":true,"children":["39cd0047-8c4e-0c56-9ba0-6821e5288d85","e8531e9d-18f6-891f-90e4-7521fdc4d333"]},{"uuid":"3f6f3a5d-40f0-79e0-f4c7-8260f3f17f66","isOpen":true,"children":["980d2769-4452-dfb8-65e0-279fe928b4dc"]},{"uuid":"8b7e8f66-6842-18bf-5ec6-ed8186b30dcc","isOpen":true,"children":["a67ab72a-fddc-6238-2450-0efdf132c8f1"]},{"uuid":"ad7f6d7b-a515-346a-234d-92719a8f6f03","isOpen":true,"children":["9f17843d-d8f7-54ed-8955-46c9f9b16c58","ef919b63-e2e6-f0f2-daa2-f3617e632db6"]},{"uuid":"89bec69e-bfd8-c0e8-d1df-5948a74a5ae4","isOpen":true,"children":["948db43e-cb45-4d54-b8c9-2fff5114297d","79498393-90f7-57dc-503c-6574ada461b9"]}],"textures":[{"name":"","path":"","folder":"","namespace":"","id":"0","group":"","scope":0,"width":64,"height":64,"uv_width":64,"uv_height":64,"particle":false,"use_as_default":false,"layers_enabled":false,"sync_to_project":"","file_format":"png","render_mode":"default","render_sides":"auto","wrap_mode":"limited","pbr_channel":"color","fps":7,"frame_time":1,"frame_order_type":"loop","frame_order":"","frame_interpolate":false,"visible":true,"internal":true,"saved":false,"uuid":"76798d81-bebb-9cf7-cb53-4b3c6019c51a","source":"data:image/png;base64,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"}]} \ No newline at end of file +{"meta":{"format_version":"5.0","model_format":"modded_entity","box_uv":true},"name":"Robes2","model_identifier":"","modded_entity_entity_class":"","modded_entity_version":"1.17","modded_entity_flip_y":true,"visible_box":[1,1,0],"variable_placeholders":"","multi_file_ruleset":"","variable_placeholder_buttons":[],"timeline_setups":[],"unhandled_root_fields":{},"resolution":{"width":64,"height":64},"elements":[{"name":"hood_outer","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-4,24,-4],"to":[4,32,4],"autouv":0,"color":3,"inflate":0.4,"origin":[0,0,0],"uv_offset":[0,16],"faces":{"north":{"uv":[8,24,16,32],"texture":0},"east":{"uv":[0,24,8,32],"texture":0},"south":{"uv":[24,24,32,32],"texture":0},"west":{"uv":[16,24,24,32],"texture":0},"up":{"uv":[16,24,8,16],"texture":0},"down":{"uv":[24,16,16,24],"texture":0}},"type":"cube","uuid":"b2301383-7b8a-8d9f-c284-318663224705"},{"name":"hood_inner","box_uv":true,"render_order":"behind","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-4,24,-4],"to":[4,32,4],"autouv":0,"color":0,"inflate":0.3,"origin":[0,0,0],"faces":{"north":{"uv":[8,8,16,16],"texture":0},"east":{"uv":[0,8,8,16],"texture":0},"south":{"uv":[24,8,32,16],"texture":0},"west":{"uv":[16,8,24,16],"texture":0},"up":{"uv":[16,8,8,0],"texture":0},"down":{"uv":[24,0,16,8],"texture":0}},"type":"cube","uuid":"cec6b116-5e7e-77d1-1f1a-e56dfe32702c"},{"name":"right_horn","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-8.25,34.25,0],"to":[-0.25,38.25,0],"autouv":0,"color":6,"rotation":[0,0,-90],"origin":[-4.25,36.25,0],"uv_offset":[24,0],"faces":{"north":{"uv":[24,0,32,4],"texture":0},"east":{"uv":[24,0,24,4],"texture":0},"south":{"uv":[32,0,40,4],"texture":0},"west":{"uv":[32,0,32,4],"texture":0},"up":{"uv":[32,0,24,0],"texture":0},"down":{"uv":[40,0,32,0],"texture":0}},"type":"cube","uuid":"cae1f41b-7569-26aa-acc4-3ed8d8815444"},{"name":"tunic_outer","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-4,12,-2],"to":[4,24,2],"autouv":0,"color":7,"inflate":0.4,"origin":[0,0,0],"uv_offset":[40,16],"faces":{"north":{"uv":[44,20,52,32],"texture":0},"east":{"uv":[40,20,44,32],"texture":0},"south":{"uv":[56,20,64,32],"texture":0},"west":{"uv":[52,20,56,32],"texture":0},"up":{"uv":[52,20,44,16],"texture":0},"down":{"uv":[60,16,52,20],"texture":0}},"type":"cube","uuid":"a19f6d42-3fe9-bb4c-480e-d6574977d99f"},{"name":"tunic_inner","box_uv":true,"render_order":"behind","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-4,12,-2],"to":[4,24,2],"autouv":0,"color":3,"inflate":0.3,"origin":[0,0,0],"uv_offset":[40,0],"faces":{"north":{"uv":[44,4,52,16],"texture":0},"east":{"uv":[40,4,44,16],"texture":0},"south":{"uv":[56,4,64,16],"texture":0},"west":{"uv":[52,4,56,16],"texture":0},"up":{"uv":[52,4,44,0],"texture":0},"down":{"uv":[60,0,52,4],"texture":0}},"type":"cube","uuid":"d6c0c5b1-527b-cf1f-061a-36c7e9bb98db"},{"name":"left_sleeve","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-8,12,-2],"to":[-4,24,2],"autouv":0,"color":3,"mirror_uv":true,"inflate":0.3,"origin":[0,0,0],"uv_offset":[0,32],"faces":{"north":{"uv":[8,36,4,48],"texture":0},"east":{"uv":[12,36,8,48],"texture":0},"south":{"uv":[16,36,12,48],"texture":0},"west":{"uv":[4,36,0,48],"texture":0},"up":{"uv":[4,36,8,32],"texture":0},"down":{"uv":[8,32,12,36],"texture":0}},"type":"cube","uuid":"818aa72b-cef1-58e9-725c-5eaa37f7b9dc"},{"name":"right_sleeve","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[4,12,-2],"to":[8,24,2],"autouv":0,"color":7,"inflate":0.3,"origin":[0,0,0],"uv_offset":[0,32],"faces":{"north":{"uv":[4,36,8,48],"texture":0},"east":{"uv":[0,36,4,48],"texture":0},"south":{"uv":[12,36,16,48],"texture":0},"west":{"uv":[8,36,12,48],"texture":0},"up":{"uv":[8,36,4,32],"texture":0},"down":{"uv":[12,32,8,36],"texture":0}},"type":"cube","uuid":"dbf8c827-9338-7729-bb47-4f346cdf3592"},{"name":"left_skirt","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-4,0,-2],"to":[0,12,2],"autouv":0,"color":8,"inflate":0.4,"origin":[-4,0,0],"uv_offset":[48,32],"faces":{"north":{"uv":[52,36,56,48],"texture":0},"east":{"uv":[48,36,52,48],"texture":0},"south":{"uv":[60,36,64,48],"texture":0},"west":{"uv":[56,36,60,48],"texture":0},"up":{"uv":[56,36,52,32],"texture":0},"down":{"uv":[60,32,56,36],"texture":0}},"type":"cube","uuid":"22bfadf3-71a3-962a-553b-5d9aff88ddc3"},{"name":"right_skirt","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[0,0,-2],"to":[4,12,2],"autouv":0,"color":8,"mirror_uv":true,"inflate":0.4,"origin":[4,0,0],"uv_offset":[48,32],"faces":{"north":{"uv":[56,36,52,48],"texture":0},"east":{"uv":[60,36,56,48],"texture":0},"south":{"uv":[64,36,60,48],"texture":0},"west":{"uv":[52,36,48,48],"texture":0},"up":{"uv":[52,36,56,32],"texture":0},"down":{"uv":[56,32,60,36],"texture":0}},"type":"cube","uuid":"1f6091bd-5faa-e333-da79-c6c57a92952a"},{"name":"left_boot","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-4,0,-2],"to":[0,4,2],"autouv":0,"color":8,"inflate":0.3,"origin":[0,0,0],"uv_offset":[16,40],"faces":{"north":{"uv":[20,44,24,48],"texture":0},"east":{"uv":[16,44,20,48],"texture":0},"south":{"uv":[28,44,32,48],"texture":0},"west":{"uv":[24,44,28,48],"texture":0},"up":{"uv":[24,44,20,40],"texture":0},"down":{"uv":[28,40,24,44],"texture":0}},"type":"cube","uuid":"5a38ae46-c69d-e663-6bf0-db99aa735735"},{"name":"right_boot","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[0,0,-2],"to":[4,4,2],"autouv":0,"color":4,"inflate":0.3,"origin":[0,0,0],"uv_offset":[16,40],"faces":{"north":{"uv":[20,44,24,48],"texture":0},"east":{"uv":[16,44,20,48],"texture":0},"south":{"uv":[28,44,32,48],"texture":0},"west":{"uv":[24,44,28,48],"texture":0},"up":{"uv":[24,44,20,40],"texture":0},"down":{"uv":[28,40,24,44],"texture":0}},"type":"cube","uuid":"60e41237-317f-4c78-8b20-dab88a2ba123"},{"name":"left_horn","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[0.25,34.25,0],"to":[8.25,38.25,0],"autouv":0,"color":7,"mirror_uv":true,"rotation":[0,0,90],"origin":[4.25,36.25,0],"uv_offset":[24,0],"faces":{"north":{"uv":[32,0,24,4],"texture":0},"east":{"uv":[32,0,32,4],"texture":0},"south":{"uv":[40,0,32,4],"texture":0},"west":{"uv":[24,0,24,4],"texture":0},"up":{"uv":[24,0,32,0],"texture":0},"down":{"uv":[32,0,40,0],"texture":0}},"type":"cube","uuid":"c3b4c436-d99b-e573-ef06-7f6c2bd3370f"}],"groups":[{"name":"head","uuid":"a98bbf19-0b66-952c-1616-51351bc4fde0","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[-4,32,-4],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"body","uuid":"a946c104-4b18-70b2-14d4-8c06829849be","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[-4,24,-2],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"rightArm","uuid":"26a798c8-f71d-51b0-0be9-e11439c93c86","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[4,24,-2],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"leftArm","uuid":"759c4eae-7953-1987-4504-74b1555e5c39","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[-8,24,-2],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"leftLeg","uuid":"46e6c36b-8782-ecc4-f6be-415512f92d4a","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[-4,12,-2],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"rightLeg","uuid":"e5bb982a-468b-c3e8-d99f-7b7a594eefed","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[0,12,-2],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"horns","uuid":"5e0675dc-8bb1-c564-3970-d9333592e0b3","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[-4.25,36.25,0],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false}],"outliner":[{"uuid":"a98bbf19-0b66-952c-1616-51351bc4fde0","isOpen":true,"children":["cec6b116-5e7e-77d1-1f1a-e56dfe32702c","b2301383-7b8a-8d9f-c284-318663224705",{"uuid":"5e0675dc-8bb1-c564-3970-d9333592e0b3","isOpen":true,"children":["cae1f41b-7569-26aa-acc4-3ed8d8815444","c3b4c436-d99b-e573-ef06-7f6c2bd3370f"]}]},{"uuid":"a946c104-4b18-70b2-14d4-8c06829849be","isOpen":true,"children":["d6c0c5b1-527b-cf1f-061a-36c7e9bb98db","a19f6d42-3fe9-bb4c-480e-d6574977d99f"]},{"uuid":"26a798c8-f71d-51b0-0be9-e11439c93c86","isOpen":true,"children":["dbf8c827-9338-7729-bb47-4f346cdf3592"]},{"uuid":"759c4eae-7953-1987-4504-74b1555e5c39","isOpen":true,"children":["818aa72b-cef1-58e9-725c-5eaa37f7b9dc"]},{"uuid":"e5bb982a-468b-c3e8-d99f-7b7a594eefed","isOpen":true,"children":["1f6091bd-5faa-e333-da79-c6c57a92952a","60e41237-317f-4c78-8b20-dab88a2ba123"]},{"uuid":"46e6c36b-8782-ecc4-f6be-415512f92d4a","isOpen":true,"children":["22bfadf3-71a3-962a-553b-5d9aff88ddc3","5a38ae46-c69d-e663-6bf0-db99aa735735"]}],"textures":[{"name":"","path":"","folder":"","namespace":"","id":"0","group":"","scope":0,"width":64,"height":64,"uv_width":64,"uv_height":64,"particle":false,"use_as_default":false,"layers_enabled":false,"sync_to_project":"","file_format":"png","render_mode":"default","render_sides":"auto","wrap_mode":"limited","pbr_channel":"color","fps":7,"frame_time":1,"frame_order_type":"loop","frame_order":"","frame_interpolate":false,"visible":true,"internal":true,"saved":false,"uuid":"ae10bf54-61f3-91d7-642d-574fba3483bc","source":"data:image/png;base64,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"}]} \ No newline at end of file diff --git a/art/robes/Robes2.bbmodel b/art/robes/Robes2.bbmodel index 690b827aa2..5c0bb4790f 100644 --- a/art/robes/Robes2.bbmodel +++ b/art/robes/Robes2.bbmodel @@ -1 +1 @@ -{"meta":{"format_version":"5.0","model_format":"modded_entity","box_uv":true},"name":"Robes2","model_identifier":"","modded_entity_entity_class":"","modded_entity_version":"1.17","modded_entity_flip_y":true,"visible_box":[1,1,0],"variable_placeholders":"","multi_file_ruleset":"","variable_placeholder_buttons":[],"timeline_setups":[],"unhandled_root_fields":{},"resolution":{"width":64,"height":64},"elements":[{"name":"hood_outer","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-4,24,-4],"to":[4,32,4],"autouv":0,"color":3,"inflate":0.4,"origin":[0,0,0],"uv_offset":[0,16],"faces":{"north":{"uv":[8,24,16,32],"texture":0},"east":{"uv":[0,24,8,32],"texture":0},"south":{"uv":[24,24,32,32],"texture":0},"west":{"uv":[16,24,24,32],"texture":0},"up":{"uv":[16,24,8,16],"texture":0},"down":{"uv":[24,16,16,24],"texture":0}},"type":"cube","uuid":"b2301383-7b8a-8d9f-c284-318663224705"},{"name":"hood_inner","box_uv":true,"render_order":"behind","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-4,24,-4],"to":[4,32,4],"autouv":0,"color":0,"inflate":0.3,"origin":[0,0,0],"faces":{"north":{"uv":[8,8,16,16],"texture":0},"east":{"uv":[0,8,8,16],"texture":0},"south":{"uv":[24,8,32,16],"texture":0},"west":{"uv":[16,8,24,16],"texture":0},"up":{"uv":[16,8,8,0],"texture":0},"down":{"uv":[24,0,16,8],"texture":0}},"type":"cube","uuid":"cec6b116-5e7e-77d1-1f1a-e56dfe32702c"},{"name":"right_horn","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-8.25,34.25,0],"to":[-0.25,38.25,0],"autouv":0,"color":6,"rotation":[0,0,-90],"origin":[-4.25,36.25,0],"uv_offset":[24,0],"faces":{"north":{"uv":[24,0,32,4],"texture":0},"east":{"uv":[24,0,24,4],"texture":0},"south":{"uv":[32,0,40,4],"texture":0},"west":{"uv":[32,0,32,4],"texture":0},"up":{"uv":[32,0,24,0],"texture":0},"down":{"uv":[40,0,32,0],"texture":0}},"type":"cube","uuid":"cae1f41b-7569-26aa-acc4-3ed8d8815444"},{"name":"tunic_outer","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-4,12,-2],"to":[4,24,2],"autouv":0,"color":7,"inflate":0.4,"origin":[0,0,0],"uv_offset":[40,16],"faces":{"north":{"uv":[44,20,52,32],"texture":0},"east":{"uv":[40,20,44,32],"texture":0},"south":{"uv":[56,20,64,32],"texture":0},"west":{"uv":[52,20,56,32],"texture":0},"up":{"uv":[52,20,44,16],"texture":0},"down":{"uv":[60,16,52,20],"texture":0}},"type":"cube","uuid":"a19f6d42-3fe9-bb4c-480e-d6574977d99f"},{"name":"tunic_inner","box_uv":true,"render_order":"behind","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-4,12,-2],"to":[4,24,2],"autouv":0,"color":3,"inflate":0.3,"origin":[0,0,0],"uv_offset":[40,0],"faces":{"north":{"uv":[44,4,52,16],"texture":0},"east":{"uv":[40,4,44,16],"texture":0},"south":{"uv":[56,4,64,16],"texture":0},"west":{"uv":[52,4,56,16],"texture":0},"up":{"uv":[52,4,44,0],"texture":0},"down":{"uv":[60,0,52,4],"texture":0}},"type":"cube","uuid":"d6c0c5b1-527b-cf1f-061a-36c7e9bb98db"},{"name":"left_sleeve","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-8,12,-2],"to":[-4,24,2],"autouv":0,"color":3,"mirror_uv":true,"inflate":0.3,"origin":[0,0,0],"uv_offset":[0,32],"faces":{"north":{"uv":[8,36,4,48],"texture":0},"east":{"uv":[12,36,8,48],"texture":0},"south":{"uv":[16,36,12,48],"texture":0},"west":{"uv":[4,36,0,48],"texture":0},"up":{"uv":[4,36,8,32],"texture":0},"down":{"uv":[8,32,12,36],"texture":0}},"type":"cube","uuid":"818aa72b-cef1-58e9-725c-5eaa37f7b9dc"},{"name":"right_sleeve","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[4,12,-2],"to":[8,24,2],"autouv":0,"color":7,"inflate":0.3,"origin":[0,0,0],"uv_offset":[0,32],"faces":{"north":{"uv":[4,36,8,48],"texture":0},"east":{"uv":[0,36,4,48],"texture":0},"south":{"uv":[12,36,16,48],"texture":0},"west":{"uv":[8,36,12,48],"texture":0},"up":{"uv":[8,36,4,32],"texture":0},"down":{"uv":[12,32,8,36],"texture":0}},"type":"cube","uuid":"dbf8c827-9338-7729-bb47-4f346cdf3592"},{"name":"left_skirt","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-4,0,-2],"to":[0,12,2],"autouv":0,"color":8,"inflate":0.4,"origin":[-4,0,0],"uv_offset":[48,32],"faces":{"north":{"uv":[52,36,56,48],"texture":0},"east":{"uv":[48,36,52,48],"texture":0},"south":{"uv":[60,36,64,48],"texture":0},"west":{"uv":[56,36,60,48],"texture":0},"up":{"uv":[56,36,52,32],"texture":0},"down":{"uv":[60,32,56,36],"texture":0}},"type":"cube","uuid":"22bfadf3-71a3-962a-553b-5d9aff88ddc3"},{"name":"right_skirt","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[0,0,-2],"to":[4,12,2],"autouv":0,"color":8,"mirror_uv":true,"inflate":0.4,"origin":[4,0,0],"uv_offset":[48,32],"faces":{"north":{"uv":[56,36,52,48],"texture":0},"east":{"uv":[60,36,56,48],"texture":0},"south":{"uv":[64,36,60,48],"texture":0},"west":{"uv":[52,36,48,48],"texture":0},"up":{"uv":[52,36,56,32],"texture":0},"down":{"uv":[56,32,60,36],"texture":0}},"type":"cube","uuid":"1f6091bd-5faa-e333-da79-c6c57a92952a"},{"name":"left_boot","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-4,0,-2],"to":[0,4,2],"autouv":0,"color":8,"inflate":0.3,"origin":[0,0,0],"uv_offset":[16,40],"faces":{"north":{"uv":[20,44,24,48],"texture":0},"east":{"uv":[16,44,20,48],"texture":0},"south":{"uv":[28,44,32,48],"texture":0},"west":{"uv":[24,44,28,48],"texture":0},"up":{"uv":[24,44,20,40],"texture":0},"down":{"uv":[28,40,24,44],"texture":0}},"type":"cube","uuid":"5a38ae46-c69d-e663-6bf0-db99aa735735"},{"name":"right_boot","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[0,0,-2],"to":[4,4,2],"autouv":0,"color":4,"inflate":0.3,"origin":[0,0,0],"uv_offset":[16,40],"faces":{"north":{"uv":[20,44,24,48],"texture":0},"east":{"uv":[16,44,20,48],"texture":0},"south":{"uv":[28,44,32,48],"texture":0},"west":{"uv":[24,44,28,48],"texture":0},"up":{"uv":[24,44,20,40],"texture":0},"down":{"uv":[28,40,24,44],"texture":0}},"type":"cube","uuid":"60e41237-317f-4c78-8b20-dab88a2ba123"},{"name":"left_horn","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[0.25,34.25,0],"to":[8.25,38.25,0],"autouv":0,"color":7,"mirror_uv":true,"rotation":[0,0,90],"origin":[4.25,36.25,0],"uv_offset":[24,0],"faces":{"north":{"uv":[32,0,24,4],"texture":0},"east":{"uv":[32,0,32,4],"texture":0},"south":{"uv":[40,0,32,4],"texture":0},"west":{"uv":[24,0,24,4],"texture":0},"up":{"uv":[24,0,32,0],"texture":0},"down":{"uv":[32,0,40,0],"texture":0}},"type":"cube","uuid":"c3b4c436-d99b-e573-ef06-7f6c2bd3370f"}],"groups":[{"name":"head","uuid":"a98bbf19-0b66-952c-1616-51351bc4fde0","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[-4,32,-4],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"body","uuid":"a946c104-4b18-70b2-14d4-8c06829849be","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[-4,24,-2],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"rightArm","uuid":"26a798c8-f71d-51b0-0be9-e11439c93c86","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[4,24,-2],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"leftArm","uuid":"759c4eae-7953-1987-4504-74b1555e5c39","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[-8,24,-2],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"leftLeg","uuid":"46e6c36b-8782-ecc4-f6be-415512f92d4a","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[-4,12,-2],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"rightLeg","uuid":"e5bb982a-468b-c3e8-d99f-7b7a594eefed","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[0,12,-2],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"horns","uuid":"5e0675dc-8bb1-c564-3970-d9333592e0b3","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[-4.25,36.25,0],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false}],"outliner":[{"uuid":"a98bbf19-0b66-952c-1616-51351bc4fde0","isOpen":true,"children":["cec6b116-5e7e-77d1-1f1a-e56dfe32702c","b2301383-7b8a-8d9f-c284-318663224705",{"uuid":"5e0675dc-8bb1-c564-3970-d9333592e0b3","isOpen":true,"children":["cae1f41b-7569-26aa-acc4-3ed8d8815444","c3b4c436-d99b-e573-ef06-7f6c2bd3370f"]}]},{"uuid":"a946c104-4b18-70b2-14d4-8c06829849be","isOpen":true,"children":["d6c0c5b1-527b-cf1f-061a-36c7e9bb98db","a19f6d42-3fe9-bb4c-480e-d6574977d99f"]},{"uuid":"26a798c8-f71d-51b0-0be9-e11439c93c86","isOpen":true,"children":["dbf8c827-9338-7729-bb47-4f346cdf3592"]},{"uuid":"759c4eae-7953-1987-4504-74b1555e5c39","isOpen":true,"children":["818aa72b-cef1-58e9-725c-5eaa37f7b9dc"]},{"uuid":"e5bb982a-468b-c3e8-d99f-7b7a594eefed","isOpen":true,"children":["1f6091bd-5faa-e333-da79-c6c57a92952a","60e41237-317f-4c78-8b20-dab88a2ba123"]},{"uuid":"46e6c36b-8782-ecc4-f6be-415512f92d4a","isOpen":true,"children":["22bfadf3-71a3-962a-553b-5d9aff88ddc3","5a38ae46-c69d-e663-6bf0-db99aa735735"]}],"textures":[{"name":"","path":"","folder":"","namespace":"","id":"0","group":"","scope":0,"width":64,"height":64,"uv_width":64,"uv_height":64,"particle":false,"use_as_default":false,"layers_enabled":false,"sync_to_project":"","file_format":"png","render_mode":"default","render_sides":"auto","wrap_mode":"limited","pbr_channel":"color","fps":7,"frame_time":1,"frame_order_type":"loop","frame_order":"","frame_interpolate":false,"visible":true,"internal":true,"saved":false,"uuid":"ae10bf54-61f3-91d7-642d-574fba3483bc","source":"data:image/png;base64,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"}]} \ No newline at end of file +{"meta":{"format_version":"5.0","model_format":"modded_entity","box_uv":true},"name":"Robes3","model_identifier":"","modded_entity_entity_class":"","modded_entity_version":"1.17","modded_entity_flip_y":true,"visible_box":[1,1,0],"variable_placeholders":"","multi_file_ruleset":"","variable_placeholder_buttons":[],"timeline_setups":[],"unhandled_root_fields":{},"resolution":{"width":64,"height":64},"elements":[{"name":"hood_outer","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-4,24,-4],"to":[4,32,4],"autouv":0,"color":4,"inflate":0.4,"origin":[0,0,0],"uv_offset":[0,16],"faces":{"north":{"uv":[8,24,16,32],"texture":0},"east":{"uv":[0,24,8,32],"texture":0},"south":{"uv":[24,24,32,32],"texture":0},"west":{"uv":[16,24,24,32],"texture":0},"up":{"uv":[16,24,8,16],"texture":0},"down":{"uv":[24,16,16,24],"texture":0}},"type":"cube","uuid":"bb31bdb7-b4f5-8fd6-0631-ad789263fce7"},{"name":"hood_inner","box_uv":true,"render_order":"behind","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-4,24,-4],"to":[4,32,4],"autouv":0,"color":8,"inflate":0.3,"origin":[0,0,0],"faces":{"north":{"uv":[8,8,16,16],"texture":0},"east":{"uv":[0,8,8,16],"texture":0},"south":{"uv":[24,8,32,16],"texture":0},"west":{"uv":[16,8,24,16],"texture":0},"up":{"uv":[16,8,8,0],"texture":0},"down":{"uv":[24,0,16,8],"texture":0}},"type":"cube","uuid":"7c76db23-25f3-7b95-ac9f-2e9bcf0f9759"},{"name":"body_outer","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-4,12,-2],"to":[4,24,2],"autouv":0,"color":5,"inflate":0.4,"origin":[0,0,0],"uv_offset":[40,16],"faces":{"north":{"uv":[44,20,52,32],"texture":0},"east":{"uv":[40,20,44,32],"texture":0},"south":{"uv":[56,20,64,32],"texture":0},"west":{"uv":[52,20,56,32],"texture":0},"up":{"uv":[52,20,44,16],"texture":0},"down":{"uv":[60,16,52,20],"texture":0}},"type":"cube","uuid":"94261ed0-a8a6-8d18-ac42-13127515d848"},{"name":"body_inner","box_uv":true,"render_order":"behind","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-4,12,-2],"to":[4,24,2],"autouv":0,"color":3,"inflate":0.3,"origin":[0,0,0],"uv_offset":[40,0],"faces":{"north":{"uv":[44,4,52,16],"texture":0},"east":{"uv":[40,4,44,16],"texture":0},"south":{"uv":[56,4,64,16],"texture":0},"west":{"uv":[52,4,56,16],"texture":0},"up":{"uv":[52,4,44,0],"texture":0},"down":{"uv":[60,0,52,4],"texture":0}},"type":"cube","uuid":"bd4844dd-2a0e-3f4e-fa0b-7da3d2887e40"},{"name":"left_sleeve","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-8,12,-2],"to":[-4,24,2],"autouv":0,"color":3,"mirror_uv":true,"inflate":0.3,"origin":[0,0,0],"uv_offset":[0,32],"faces":{"north":{"uv":[8,36,4,48],"texture":0},"east":{"uv":[12,36,8,48],"texture":0},"south":{"uv":[16,36,12,48],"texture":0},"west":{"uv":[4,36,0,48],"texture":0},"up":{"uv":[4,36,8,32],"texture":0},"down":{"uv":[8,32,12,36],"texture":0}},"type":"cube","uuid":"9c87cab3-03d4-97ee-21bd-9815d0e98d53"},{"name":"right_sleeve","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[4,12,-2],"to":[8,24,2],"autouv":0,"color":0,"inflate":0.3,"origin":[0,0,0],"uv_offset":[0,32],"faces":{"north":{"uv":[4,36,8,48],"texture":0},"east":{"uv":[0,36,4,48],"texture":0},"south":{"uv":[12,36,16,48],"texture":0},"west":{"uv":[8,36,12,48],"texture":0},"up":{"uv":[8,36,4,32],"texture":0},"down":{"uv":[12,32,8,36],"texture":0}},"type":"cube","uuid":"fd5e025b-d5f6-8bd3-d981-66783aa2a923"},{"name":"right_legging","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[0,0,-2],"to":[4,12,2],"autouv":0,"color":3,"inflate":0.35,"origin":[0,0,0],"uv_offset":[48,32],"faces":{"north":{"uv":[52,36,56,48],"texture":0},"east":{"uv":[48,36,52,48],"texture":0},"south":{"uv":[60,36,64,48],"texture":0},"west":{"uv":[56,36,60,48],"texture":0},"up":{"uv":[56,36,52,32],"texture":0},"down":{"uv":[60,32,56,36],"texture":0}},"type":"cube","uuid":"e035f1e5-f5da-d86a-efe6-d73b506ae82e"},{"name":"left_legging","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-4,0,-2],"to":[0,12,2],"autouv":0,"color":9,"mirror_uv":true,"inflate":0.35,"origin":[0,0,0],"uv_offset":[48,32],"faces":{"north":{"uv":[56,36,52,48],"texture":0},"east":{"uv":[60,36,56,48],"texture":0},"south":{"uv":[64,36,60,48],"texture":0},"west":{"uv":[52,36,48,48],"texture":0},"up":{"uv":[52,36,56,32],"texture":0},"down":{"uv":[56,32,60,36],"texture":0}},"type":"cube","uuid":"92e4165d-8268-5063-8211-7221aae1b76e"},{"name":"left_boot","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-4,0,-2],"to":[0,4,2],"autouv":0,"color":2,"inflate":0.3,"origin":[0,0,0],"uv_offset":[16,40],"faces":{"north":{"uv":[20,44,24,48],"texture":0},"east":{"uv":[16,44,20,48],"texture":0},"south":{"uv":[28,44,32,48],"texture":0},"west":{"uv":[24,44,28,48],"texture":0},"up":{"uv":[24,44,20,40],"texture":0},"down":{"uv":[28,40,24,44],"texture":0}},"type":"cube","uuid":"0c26f55d-2961-ea9c-ea83-843b23d37a98"},{"name":"right_boot","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[0,0,-2],"to":[4,4,2],"autouv":0,"color":3,"inflate":0.3,"origin":[0,0,0],"uv_offset":[16,40],"faces":{"north":{"uv":[20,44,24,48],"texture":0},"east":{"uv":[16,44,20,48],"texture":0},"south":{"uv":[28,44,32,48],"texture":0},"west":{"uv":[24,44,28,48],"texture":0},"up":{"uv":[24,44,20,40],"texture":0},"down":{"uv":[28,40,24,44],"texture":0}},"type":"cube","uuid":"3bb185dc-1abc-3fe5-b883-7af7889a4f3f"},{"name":"strap","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-0.2,11.95,-3],"to":[9.8,14.95,3],"autouv":0,"color":2,"rotation":[0,0,22.5],"origin":[0.75,1.75,0],"uv_offset":[0,48],"faces":{"north":{"uv":[6,54,16,57],"texture":0},"east":{"uv":[0,54,6,57],"texture":0},"south":{"uv":[22,54,32,57],"texture":0},"west":{"uv":[16,54,22,57],"texture":0},"up":{"uv":[16,54,6,48],"texture":0},"down":{"uv":[26,48,16,54],"texture":0}},"type":"cube","uuid":"5595171c-e809-03ca-68ed-7115d9ffbb94"},{"name":"buckle","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[1.95,14.1,-3],"to":[4.95,17.1,3],"autouv":0,"color":6,"inflate":0.1,"origin":[0.75,0,0],"uv_offset":[32,48],"faces":{"north":{"uv":[38,54,41,57],"texture":0},"east":{"uv":[32,54,38,57],"texture":0},"south":{"uv":[47,54,50,57],"texture":0},"west":{"uv":[41,54,47,57],"texture":0},"up":{"uv":[41,54,38,48],"texture":0},"down":{"uv":[44,48,41,54],"texture":0}},"type":"cube","uuid":"4cb47817-d5c8-81f7-ce53-eddcf011ee3e"},{"name":"right_horn","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[4,28.5,0],"to":[12,36.5,0],"autouv":0,"color":0,"mirror_uv":true,"rotation":[0,0,75],"origin":[5,32.5,0],"uv_offset":[24,0],"faces":{"north":{"uv":[32,0,24,8],"texture":0},"east":{"uv":[32,0,32,8],"texture":0},"south":{"uv":[40,0,32,8],"texture":0},"west":{"uv":[24,0,24,8],"texture":0},"up":{"uv":[24,0,32,0],"texture":0},"down":{"uv":[32,0,40,0],"texture":0}},"type":"cube","uuid":"00b324ac-7d37-b5d8-4201-5e85760400af"},{"name":"left_horn","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-12,28.6,0],"to":[-4,36.6,0],"autouv":0,"color":0,"rotation":[0,0,-75],"origin":[-5,32.6,0],"uv_offset":[24,0],"faces":{"north":{"uv":[24,0,32,8],"texture":0},"east":{"uv":[24,0,24,8],"texture":0},"south":{"uv":[32,0,40,8],"texture":0},"west":{"uv":[32,0,32,8],"texture":0},"up":{"uv":[32,0,24,0],"texture":0},"down":{"uv":[40,0,32,0],"texture":0}},"type":"cube","uuid":"a9e5e1e6-b585-094b-da8c-835678984610"}],"groups":[{"name":"head","uuid":"340a6871-310d-6a24-43ff-ddf85346d82f","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[-4,32,-4],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"body","uuid":"303b4664-b31a-5ba5-b6bf-ed9ee71370bb","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[-4,24,-2],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"rightArm","uuid":"d74e7c20-c22d-d9d4-9aef-4faded63fc4e","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[4,24,-2],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"leftArm","uuid":"63506f26-b3de-59cb-b312-386615c5bc0d","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[-8,24,-2],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"rightLeg","uuid":"e46d3e87-8f26-2f4d-963a-bdf55792cfa6","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[0,12,-2],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"leftLeg","uuid":"39fd2105-d958-5410-6032-afffb1ec9e1d","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[-4,12,-2],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"sash","uuid":"01148eb6-5484-1b29-ae31-deabde803a47","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[-5.45,13.2,-3],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":false,"primary_selected":false},{"name":"horns","uuid":"05a5b561-43ff-8683-4ce7-978731e9d8c5","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[5,32.5,0],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false}],"outliner":[{"uuid":"340a6871-310d-6a24-43ff-ddf85346d82f","isOpen":true,"children":[{"uuid":"05a5b561-43ff-8683-4ce7-978731e9d8c5","isOpen":true,"children":["00b324ac-7d37-b5d8-4201-5e85760400af","a9e5e1e6-b585-094b-da8c-835678984610"]},"7c76db23-25f3-7b95-ac9f-2e9bcf0f9759","bb31bdb7-b4f5-8fd6-0631-ad789263fce7"]},{"uuid":"303b4664-b31a-5ba5-b6bf-ed9ee71370bb","isOpen":true,"children":["bd4844dd-2a0e-3f4e-fa0b-7da3d2887e40","94261ed0-a8a6-8d18-ac42-13127515d848",{"uuid":"01148eb6-5484-1b29-ae31-deabde803a47","isOpen":false,"children":["5595171c-e809-03ca-68ed-7115d9ffbb94","4cb47817-d5c8-81f7-ce53-eddcf011ee3e"]}]},{"uuid":"d74e7c20-c22d-d9d4-9aef-4faded63fc4e","isOpen":true,"children":["fd5e025b-d5f6-8bd3-d981-66783aa2a923"]},{"uuid":"63506f26-b3de-59cb-b312-386615c5bc0d","isOpen":true,"children":["9c87cab3-03d4-97ee-21bd-9815d0e98d53"]},{"uuid":"e46d3e87-8f26-2f4d-963a-bdf55792cfa6","isOpen":true,"children":["e035f1e5-f5da-d86a-efe6-d73b506ae82e","3bb185dc-1abc-3fe5-b883-7af7889a4f3f"]},{"uuid":"39fd2105-d958-5410-6032-afffb1ec9e1d","isOpen":true,"children":["92e4165d-8268-5063-8211-7221aae1b76e","0c26f55d-2961-ea9c-ea83-843b23d37a98"]}],"textures":[{"name":"","path":"","folder":"","namespace":"","id":"0","group":"","scope":0,"width":64,"height":64,"uv_width":64,"uv_height":64,"particle":false,"use_as_default":false,"layers_enabled":false,"sync_to_project":"","file_format":"png","render_mode":"default","render_sides":"auto","wrap_mode":"limited","pbr_channel":"color","fps":7,"frame_time":1,"frame_order_type":"loop","frame_order":"","frame_interpolate":false,"visible":true,"internal":true,"saved":false,"uuid":"af3aae18-9f98-d4de-7b0f-c58cd9965743","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAHOUlEQVR4XmNcE7ny/9NP7xjeffvG8Ozja4YXH94wbL43h5EBCuode/8zUAAa9xczYtP+5M6Z/zIqJoykGi3MqUGRe95+v4FiJ0vwsjCGh+/fM3z89JlBX0GekYHG4PKJbf8FRcQYRKTkyLaJn0OEQYBdEK7/w8/3YPbHH2/ANCF5ZIuZfn5/zcDy7h4D04urDMe2Lv5Pbf+DYvrHt1f/YVhVzwTseQ4uMYoCG+ZpkHuRAwPmfkLyMHWM//8++P/vRz3D34evGd7fPs3w+ek/hmvn/jEcPvKRofvGP0ZCSQ4U2vgCbeP2KgaQp0Fq3jx7BFYKS/qgQCE1IKidBRiNJHz/g0ILlHzQ8wfItZQGwL33RxhBqQBbkgcFCKFygFIPE0rRTOdebGYEORKb56mVHWCeBMX27UtnGEAeB9HEFoKgVIac0mBsZHF0eWLVszDQCYA8TE6Sp7XzmCi1AFbyYjMHWU7XwosRFAig7ECqnaBCDrmgw1boocsTq54FVM9POTGbonDAFQg5Fqkgc+E1y5rK60D+dQbktgWudgIxDoJ5El8kIJuDTT3RWeDi5SXwuhuUh/V1YxgGEsjzq8KtR2bjchMu9URlgQP7+xge3bwOLrxAngexQWIMwwCAAwBWmmKjYX70DWllwMYmRi8twunhx9twY5HZuOzCpZ5p8YX1eN0H8uDnt28ZQDH+/s0rBhAGsUFihBpBhMymNGBA7RfkFh8h87CpJyoLIMc+tlTAQGOA7nBsnkYWI0U9UQEASwUwfxIT+wxDBOANAFD1AqtiYmJmMoA8DsIgNsh/yPK09C+6PTA3IYsjV4WkqCfYIyNmPAA0joAtAKT4RRkoqeexmTnRe/p/aT4hhssvnjBUbo0FK2n3XsygKyHDABrXyN+aSVIvk6SmsBAXF9hC0OAJzHG4PA+SxydHjRQD611SYhZRAQDzOMwibAHBMADAzrQAbGusQSDZthMsBNE9j2wTPjlahQdy6kO3A58cLvewMAxyAMrzyE4EeRKU10Fizoo2DHvvHwFLw8TQ1RPyHtNgDwDkWAWxCaVIdPVDPgCQPYBcqCIHBK5AQVYPChgYRjaTYAoglOdAVR2uUMYnR2zKI7UmwaUeOZCQ/cSCXs+TUrDB1ApxycP9gx5g2NoRyHYQU28Tmw2wRRauCISJoxSCuDwPUozeoAF5DJt6kBi+VENInlDKAMUwcoBjyyLI9oPU40qJIDl4AGBLIjAxbK05kBiuEhebJ2FJ89lHhJOpkUVApr2DzmrhCjxYIKBnD5D9dKkGseVLanke5OlzD6/D/S4hIIISDqCpPpAAiEaWg9kPDgCQA0ExoyMpj6IZFLLElAmwJCeE1FSGeRpkEaWexZaM8WUzbAEO8hi6O0DqsNYCxBZSuAowbA6ABPJrBhjNQCJANpNQkifFaBZYyIAsuPL8IQN6KiBkGLbYh+kBhTiu2MAljm4fLAkji8PEkGax/2sLaoCVYFMPSvrYYh+klgWWvGCOBQUCiE1KaQ1Ti5zsQa4h1pP4Ahl5qh6XOtDMFhDjNMZXKeU/toABmY3RdwaV7Mj5i9r9eQYag1SjCpQZ7tnnOvCOD2CUAfgKF4ZhCJgYRjjACABSmsLDIeww8gfymiF8HgQFFGhsLmR5OONABgRsyQ3IDaA5CxANWoJDLB+jJQgaWAB5jFBZAFIDG4QYyAAATbgKcT0EOwFRJRPPxxp7oFQAGnXF5zHQKOxAxz7IfVRPATBP42sHDKZygtIUgLUzRCgbkJL8Sa2XSc1OIe2aDKTkefQyAmsAgNr4oGyALRXAYp/UCQhalRM0SQEgx+JKBYOl8IMFKE1SAMhwbKlgsMU+yJ00SwHIqQAW2uTEPra2OGyckBr9DEpTAMFGDGwyEhYg6Hkf5BliPQLzOHKvkdJAQB6bxNU1F0Kb00TmE9WKg439YSv4QKU8rPsMCiTkAVR0x2HrHhPqrTHQGFDcjEWv5kDuhQ2qgMYWsLk/b5odWHhS1iGGQRsA2Ja1EzsdjbwuGKQH1EYHLZQkJTJBK9d5hYXBizJA+mBsK+9YqvY98I4Koy9whvFhnkJugODaAwDSA+ukkBIAIA/DzAfpQ2ZTM1fgDADYEnfQ8lZkC5Edgu4xWMAgqweZAzOLFIejByglGyzw2Uv0gAjMI/hiEyRHrocZBgjgTAGg2ASFOizGYXyQB2FlAWjBFCx/gmjkjRHIKYWcpSywgEYOcHKyEqFwxRkAsEWR6EkRWzIHWQJzHCjQkMsK9CxEbETDAhdGg/Qhs6mVYBhxlfYgD2Er2GABAHOMnLomA7ZSH+RAcvSD9GFLMehlALoacnaggexC2c4CMxTmeeRQJuQA9EBAjyFc+nENY8GyFHIKQu/2IqshtZqFuY8FOamD2MhJD1QVoXsEPR/C1CMHGswcYvWD1CGbCzMT5HnkcoaQGoZRMBoCoyEwGgKjITAaAqMhQEoIAAB2ILuJX6i+1wAAAABJRU5ErkJggg=="}]} \ No newline at end of file diff --git a/art/robes/Robes3.bbmodel b/art/robes/Robes3.bbmodel deleted file mode 100644 index 5c0bb4790f..0000000000 --- a/art/robes/Robes3.bbmodel +++ /dev/null @@ -1 +0,0 @@ -{"meta":{"format_version":"5.0","model_format":"modded_entity","box_uv":true},"name":"Robes3","model_identifier":"","modded_entity_entity_class":"","modded_entity_version":"1.17","modded_entity_flip_y":true,"visible_box":[1,1,0],"variable_placeholders":"","multi_file_ruleset":"","variable_placeholder_buttons":[],"timeline_setups":[],"unhandled_root_fields":{},"resolution":{"width":64,"height":64},"elements":[{"name":"hood_outer","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-4,24,-4],"to":[4,32,4],"autouv":0,"color":4,"inflate":0.4,"origin":[0,0,0],"uv_offset":[0,16],"faces":{"north":{"uv":[8,24,16,32],"texture":0},"east":{"uv":[0,24,8,32],"texture":0},"south":{"uv":[24,24,32,32],"texture":0},"west":{"uv":[16,24,24,32],"texture":0},"up":{"uv":[16,24,8,16],"texture":0},"down":{"uv":[24,16,16,24],"texture":0}},"type":"cube","uuid":"bb31bdb7-b4f5-8fd6-0631-ad789263fce7"},{"name":"hood_inner","box_uv":true,"render_order":"behind","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-4,24,-4],"to":[4,32,4],"autouv":0,"color":8,"inflate":0.3,"origin":[0,0,0],"faces":{"north":{"uv":[8,8,16,16],"texture":0},"east":{"uv":[0,8,8,16],"texture":0},"south":{"uv":[24,8,32,16],"texture":0},"west":{"uv":[16,8,24,16],"texture":0},"up":{"uv":[16,8,8,0],"texture":0},"down":{"uv":[24,0,16,8],"texture":0}},"type":"cube","uuid":"7c76db23-25f3-7b95-ac9f-2e9bcf0f9759"},{"name":"body_outer","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-4,12,-2],"to":[4,24,2],"autouv":0,"color":5,"inflate":0.4,"origin":[0,0,0],"uv_offset":[40,16],"faces":{"north":{"uv":[44,20,52,32],"texture":0},"east":{"uv":[40,20,44,32],"texture":0},"south":{"uv":[56,20,64,32],"texture":0},"west":{"uv":[52,20,56,32],"texture":0},"up":{"uv":[52,20,44,16],"texture":0},"down":{"uv":[60,16,52,20],"texture":0}},"type":"cube","uuid":"94261ed0-a8a6-8d18-ac42-13127515d848"},{"name":"body_inner","box_uv":true,"render_order":"behind","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-4,12,-2],"to":[4,24,2],"autouv":0,"color":3,"inflate":0.3,"origin":[0,0,0],"uv_offset":[40,0],"faces":{"north":{"uv":[44,4,52,16],"texture":0},"east":{"uv":[40,4,44,16],"texture":0},"south":{"uv":[56,4,64,16],"texture":0},"west":{"uv":[52,4,56,16],"texture":0},"up":{"uv":[52,4,44,0],"texture":0},"down":{"uv":[60,0,52,4],"texture":0}},"type":"cube","uuid":"bd4844dd-2a0e-3f4e-fa0b-7da3d2887e40"},{"name":"left_sleeve","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-8,12,-2],"to":[-4,24,2],"autouv":0,"color":3,"mirror_uv":true,"inflate":0.3,"origin":[0,0,0],"uv_offset":[0,32],"faces":{"north":{"uv":[8,36,4,48],"texture":0},"east":{"uv":[12,36,8,48],"texture":0},"south":{"uv":[16,36,12,48],"texture":0},"west":{"uv":[4,36,0,48],"texture":0},"up":{"uv":[4,36,8,32],"texture":0},"down":{"uv":[8,32,12,36],"texture":0}},"type":"cube","uuid":"9c87cab3-03d4-97ee-21bd-9815d0e98d53"},{"name":"right_sleeve","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[4,12,-2],"to":[8,24,2],"autouv":0,"color":0,"inflate":0.3,"origin":[0,0,0],"uv_offset":[0,32],"faces":{"north":{"uv":[4,36,8,48],"texture":0},"east":{"uv":[0,36,4,48],"texture":0},"south":{"uv":[12,36,16,48],"texture":0},"west":{"uv":[8,36,12,48],"texture":0},"up":{"uv":[8,36,4,32],"texture":0},"down":{"uv":[12,32,8,36],"texture":0}},"type":"cube","uuid":"fd5e025b-d5f6-8bd3-d981-66783aa2a923"},{"name":"right_legging","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[0,0,-2],"to":[4,12,2],"autouv":0,"color":3,"inflate":0.35,"origin":[0,0,0],"uv_offset":[48,32],"faces":{"north":{"uv":[52,36,56,48],"texture":0},"east":{"uv":[48,36,52,48],"texture":0},"south":{"uv":[60,36,64,48],"texture":0},"west":{"uv":[56,36,60,48],"texture":0},"up":{"uv":[56,36,52,32],"texture":0},"down":{"uv":[60,32,56,36],"texture":0}},"type":"cube","uuid":"e035f1e5-f5da-d86a-efe6-d73b506ae82e"},{"name":"left_legging","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-4,0,-2],"to":[0,12,2],"autouv":0,"color":9,"mirror_uv":true,"inflate":0.35,"origin":[0,0,0],"uv_offset":[48,32],"faces":{"north":{"uv":[56,36,52,48],"texture":0},"east":{"uv":[60,36,56,48],"texture":0},"south":{"uv":[64,36,60,48],"texture":0},"west":{"uv":[52,36,48,48],"texture":0},"up":{"uv":[52,36,56,32],"texture":0},"down":{"uv":[56,32,60,36],"texture":0}},"type":"cube","uuid":"92e4165d-8268-5063-8211-7221aae1b76e"},{"name":"left_boot","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-4,0,-2],"to":[0,4,2],"autouv":0,"color":2,"inflate":0.3,"origin":[0,0,0],"uv_offset":[16,40],"faces":{"north":{"uv":[20,44,24,48],"texture":0},"east":{"uv":[16,44,20,48],"texture":0},"south":{"uv":[28,44,32,48],"texture":0},"west":{"uv":[24,44,28,48],"texture":0},"up":{"uv":[24,44,20,40],"texture":0},"down":{"uv":[28,40,24,44],"texture":0}},"type":"cube","uuid":"0c26f55d-2961-ea9c-ea83-843b23d37a98"},{"name":"right_boot","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[0,0,-2],"to":[4,4,2],"autouv":0,"color":3,"inflate":0.3,"origin":[0,0,0],"uv_offset":[16,40],"faces":{"north":{"uv":[20,44,24,48],"texture":0},"east":{"uv":[16,44,20,48],"texture":0},"south":{"uv":[28,44,32,48],"texture":0},"west":{"uv":[24,44,28,48],"texture":0},"up":{"uv":[24,44,20,40],"texture":0},"down":{"uv":[28,40,24,44],"texture":0}},"type":"cube","uuid":"3bb185dc-1abc-3fe5-b883-7af7889a4f3f"},{"name":"strap","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-0.2,11.95,-3],"to":[9.8,14.95,3],"autouv":0,"color":2,"rotation":[0,0,22.5],"origin":[0.75,1.75,0],"uv_offset":[0,48],"faces":{"north":{"uv":[6,54,16,57],"texture":0},"east":{"uv":[0,54,6,57],"texture":0},"south":{"uv":[22,54,32,57],"texture":0},"west":{"uv":[16,54,22,57],"texture":0},"up":{"uv":[16,54,6,48],"texture":0},"down":{"uv":[26,48,16,54],"texture":0}},"type":"cube","uuid":"5595171c-e809-03ca-68ed-7115d9ffbb94"},{"name":"buckle","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[1.95,14.1,-3],"to":[4.95,17.1,3],"autouv":0,"color":6,"inflate":0.1,"origin":[0.75,0,0],"uv_offset":[32,48],"faces":{"north":{"uv":[38,54,41,57],"texture":0},"east":{"uv":[32,54,38,57],"texture":0},"south":{"uv":[47,54,50,57],"texture":0},"west":{"uv":[41,54,47,57],"texture":0},"up":{"uv":[41,54,38,48],"texture":0},"down":{"uv":[44,48,41,54],"texture":0}},"type":"cube","uuid":"4cb47817-d5c8-81f7-ce53-eddcf011ee3e"},{"name":"right_horn","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[4,28.5,0],"to":[12,36.5,0],"autouv":0,"color":0,"mirror_uv":true,"rotation":[0,0,75],"origin":[5,32.5,0],"uv_offset":[24,0],"faces":{"north":{"uv":[32,0,24,8],"texture":0},"east":{"uv":[32,0,32,8],"texture":0},"south":{"uv":[40,0,32,8],"texture":0},"west":{"uv":[24,0,24,8],"texture":0},"up":{"uv":[24,0,32,0],"texture":0},"down":{"uv":[32,0,40,0],"texture":0}},"type":"cube","uuid":"00b324ac-7d37-b5d8-4201-5e85760400af"},{"name":"left_horn","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-12,28.6,0],"to":[-4,36.6,0],"autouv":0,"color":0,"rotation":[0,0,-75],"origin":[-5,32.6,0],"uv_offset":[24,0],"faces":{"north":{"uv":[24,0,32,8],"texture":0},"east":{"uv":[24,0,24,8],"texture":0},"south":{"uv":[32,0,40,8],"texture":0},"west":{"uv":[32,0,32,8],"texture":0},"up":{"uv":[32,0,24,0],"texture":0},"down":{"uv":[40,0,32,0],"texture":0}},"type":"cube","uuid":"a9e5e1e6-b585-094b-da8c-835678984610"}],"groups":[{"name":"head","uuid":"340a6871-310d-6a24-43ff-ddf85346d82f","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[-4,32,-4],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"body","uuid":"303b4664-b31a-5ba5-b6bf-ed9ee71370bb","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[-4,24,-2],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"rightArm","uuid":"d74e7c20-c22d-d9d4-9aef-4faded63fc4e","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[4,24,-2],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"leftArm","uuid":"63506f26-b3de-59cb-b312-386615c5bc0d","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[-8,24,-2],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"rightLeg","uuid":"e46d3e87-8f26-2f4d-963a-bdf55792cfa6","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[0,12,-2],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"leftLeg","uuid":"39fd2105-d958-5410-6032-afffb1ec9e1d","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[-4,12,-2],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"sash","uuid":"01148eb6-5484-1b29-ae31-deabde803a47","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[-5.45,13.2,-3],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":false,"primary_selected":false},{"name":"horns","uuid":"05a5b561-43ff-8683-4ce7-978731e9d8c5","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[5,32.5,0],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false}],"outliner":[{"uuid":"340a6871-310d-6a24-43ff-ddf85346d82f","isOpen":true,"children":[{"uuid":"05a5b561-43ff-8683-4ce7-978731e9d8c5","isOpen":true,"children":["00b324ac-7d37-b5d8-4201-5e85760400af","a9e5e1e6-b585-094b-da8c-835678984610"]},"7c76db23-25f3-7b95-ac9f-2e9bcf0f9759","bb31bdb7-b4f5-8fd6-0631-ad789263fce7"]},{"uuid":"303b4664-b31a-5ba5-b6bf-ed9ee71370bb","isOpen":true,"children":["bd4844dd-2a0e-3f4e-fa0b-7da3d2887e40","94261ed0-a8a6-8d18-ac42-13127515d848",{"uuid":"01148eb6-5484-1b29-ae31-deabde803a47","isOpen":false,"children":["5595171c-e809-03ca-68ed-7115d9ffbb94","4cb47817-d5c8-81f7-ce53-eddcf011ee3e"]}]},{"uuid":"d74e7c20-c22d-d9d4-9aef-4faded63fc4e","isOpen":true,"children":["fd5e025b-d5f6-8bd3-d981-66783aa2a923"]},{"uuid":"63506f26-b3de-59cb-b312-386615c5bc0d","isOpen":true,"children":["9c87cab3-03d4-97ee-21bd-9815d0e98d53"]},{"uuid":"e46d3e87-8f26-2f4d-963a-bdf55792cfa6","isOpen":true,"children":["e035f1e5-f5da-d86a-efe6-d73b506ae82e","3bb185dc-1abc-3fe5-b883-7af7889a4f3f"]},{"uuid":"39fd2105-d958-5410-6032-afffb1ec9e1d","isOpen":true,"children":["92e4165d-8268-5063-8211-7221aae1b76e","0c26f55d-2961-ea9c-ea83-843b23d37a98"]}],"textures":[{"name":"","path":"","folder":"","namespace":"","id":"0","group":"","scope":0,"width":64,"height":64,"uv_width":64,"uv_height":64,"particle":false,"use_as_default":false,"layers_enabled":false,"sync_to_project":"","file_format":"png","render_mode":"default","render_sides":"auto","wrap_mode":"limited","pbr_channel":"color","fps":7,"frame_time":1,"frame_order_type":"loop","frame_order":"","frame_interpolate":false,"visible":true,"internal":true,"saved":false,"uuid":"af3aae18-9f98-d4de-7b0f-c58cd9965743","source":"data:image/png;base64,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"}]} \ No newline at end of file From 2c546596bd8dae6da16352601283a7ca2a62d2e5 Mon Sep 17 00:00:00 2001 From: Robotgiggle <88736742+Robotgiggle@users.noreply.github.com> Date: Mon, 24 Aug 2026 22:50:22 -0400 Subject: [PATCH 10/14] Flip sash on tunic2 to match item texture --- .../petrak/hexcasting/client/model/HexRobesModel.java | 10 ++++++---- art/robes/Robes2.bbmodel | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/Common/src/main/java/at/petrak/hexcasting/client/model/HexRobesModel.java b/Common/src/main/java/at/petrak/hexcasting/client/model/HexRobesModel.java index 978bb6666c..707aa30b36 100644 --- a/Common/src/main/java/at/petrak/hexcasting/client/model/HexRobesModel.java +++ b/Common/src/main/java/at/petrak/hexcasting/client/model/HexRobesModel.java @@ -223,13 +223,15 @@ public static LayerDefinition variant2() { var sash = body.addOrReplaceChild("sash", CubeListBuilder.create() - .texOffs(32, 48).addBox(-10.4F, -3.9F, 0.0F, 3.0F, 3.0F, 6.0F, new CubeDeformation(0.1F)), - PartPose.offset(5.5F, 10.8F, -3.0F)); + .texOffs(32, 48).mirror().addBox(7.4F, -3.9F, 0.0F, 3.0F, 3.0F, 6.0F, new CubeDeformation(0.1F)) + .mirror(false), + PartPose.offset(-5.45F, 10.8F, -3.0F)); sash.addOrReplaceChild("strap", CubeListBuilder.create() - .texOffs(0, 48).addBox(-9.05F, -13.2F, -3.0F, 10.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)), - PartPose.offsetAndRotation(-6.2F, 11.45F, 3.0F, 0.0F, 0.0F, 0.3927F)); + .texOffs(0, 48).mirror().addBox(-0.95F, -13.2F, -3.0F, 10.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)) + .mirror(false), + PartPose.offsetAndRotation(6.2F, 11.45F, 3.0F, 0.0F, 0.0F, -0.3927F)); var rightArm = root.addOrReplaceChild("right_arm", CubeListBuilder.create(), PartPose.ZERO); diff --git a/art/robes/Robes2.bbmodel b/art/robes/Robes2.bbmodel index 5c0bb4790f..62efa53758 100644 --- a/art/robes/Robes2.bbmodel +++ b/art/robes/Robes2.bbmodel @@ -1 +1 @@ -{"meta":{"format_version":"5.0","model_format":"modded_entity","box_uv":true},"name":"Robes3","model_identifier":"","modded_entity_entity_class":"","modded_entity_version":"1.17","modded_entity_flip_y":true,"visible_box":[1,1,0],"variable_placeholders":"","multi_file_ruleset":"","variable_placeholder_buttons":[],"timeline_setups":[],"unhandled_root_fields":{},"resolution":{"width":64,"height":64},"elements":[{"name":"hood_outer","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-4,24,-4],"to":[4,32,4],"autouv":0,"color":4,"inflate":0.4,"origin":[0,0,0],"uv_offset":[0,16],"faces":{"north":{"uv":[8,24,16,32],"texture":0},"east":{"uv":[0,24,8,32],"texture":0},"south":{"uv":[24,24,32,32],"texture":0},"west":{"uv":[16,24,24,32],"texture":0},"up":{"uv":[16,24,8,16],"texture":0},"down":{"uv":[24,16,16,24],"texture":0}},"type":"cube","uuid":"bb31bdb7-b4f5-8fd6-0631-ad789263fce7"},{"name":"hood_inner","box_uv":true,"render_order":"behind","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-4,24,-4],"to":[4,32,4],"autouv":0,"color":8,"inflate":0.3,"origin":[0,0,0],"faces":{"north":{"uv":[8,8,16,16],"texture":0},"east":{"uv":[0,8,8,16],"texture":0},"south":{"uv":[24,8,32,16],"texture":0},"west":{"uv":[16,8,24,16],"texture":0},"up":{"uv":[16,8,8,0],"texture":0},"down":{"uv":[24,0,16,8],"texture":0}},"type":"cube","uuid":"7c76db23-25f3-7b95-ac9f-2e9bcf0f9759"},{"name":"body_outer","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-4,12,-2],"to":[4,24,2],"autouv":0,"color":5,"inflate":0.4,"origin":[0,0,0],"uv_offset":[40,16],"faces":{"north":{"uv":[44,20,52,32],"texture":0},"east":{"uv":[40,20,44,32],"texture":0},"south":{"uv":[56,20,64,32],"texture":0},"west":{"uv":[52,20,56,32],"texture":0},"up":{"uv":[52,20,44,16],"texture":0},"down":{"uv":[60,16,52,20],"texture":0}},"type":"cube","uuid":"94261ed0-a8a6-8d18-ac42-13127515d848"},{"name":"body_inner","box_uv":true,"render_order":"behind","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-4,12,-2],"to":[4,24,2],"autouv":0,"color":3,"inflate":0.3,"origin":[0,0,0],"uv_offset":[40,0],"faces":{"north":{"uv":[44,4,52,16],"texture":0},"east":{"uv":[40,4,44,16],"texture":0},"south":{"uv":[56,4,64,16],"texture":0},"west":{"uv":[52,4,56,16],"texture":0},"up":{"uv":[52,4,44,0],"texture":0},"down":{"uv":[60,0,52,4],"texture":0}},"type":"cube","uuid":"bd4844dd-2a0e-3f4e-fa0b-7da3d2887e40"},{"name":"left_sleeve","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-8,12,-2],"to":[-4,24,2],"autouv":0,"color":3,"mirror_uv":true,"inflate":0.3,"origin":[0,0,0],"uv_offset":[0,32],"faces":{"north":{"uv":[8,36,4,48],"texture":0},"east":{"uv":[12,36,8,48],"texture":0},"south":{"uv":[16,36,12,48],"texture":0},"west":{"uv":[4,36,0,48],"texture":0},"up":{"uv":[4,36,8,32],"texture":0},"down":{"uv":[8,32,12,36],"texture":0}},"type":"cube","uuid":"9c87cab3-03d4-97ee-21bd-9815d0e98d53"},{"name":"right_sleeve","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[4,12,-2],"to":[8,24,2],"autouv":0,"color":0,"inflate":0.3,"origin":[0,0,0],"uv_offset":[0,32],"faces":{"north":{"uv":[4,36,8,48],"texture":0},"east":{"uv":[0,36,4,48],"texture":0},"south":{"uv":[12,36,16,48],"texture":0},"west":{"uv":[8,36,12,48],"texture":0},"up":{"uv":[8,36,4,32],"texture":0},"down":{"uv":[12,32,8,36],"texture":0}},"type":"cube","uuid":"fd5e025b-d5f6-8bd3-d981-66783aa2a923"},{"name":"right_legging","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[0,0,-2],"to":[4,12,2],"autouv":0,"color":3,"inflate":0.35,"origin":[0,0,0],"uv_offset":[48,32],"faces":{"north":{"uv":[52,36,56,48],"texture":0},"east":{"uv":[48,36,52,48],"texture":0},"south":{"uv":[60,36,64,48],"texture":0},"west":{"uv":[56,36,60,48],"texture":0},"up":{"uv":[56,36,52,32],"texture":0},"down":{"uv":[60,32,56,36],"texture":0}},"type":"cube","uuid":"e035f1e5-f5da-d86a-efe6-d73b506ae82e"},{"name":"left_legging","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-4,0,-2],"to":[0,12,2],"autouv":0,"color":9,"mirror_uv":true,"inflate":0.35,"origin":[0,0,0],"uv_offset":[48,32],"faces":{"north":{"uv":[56,36,52,48],"texture":0},"east":{"uv":[60,36,56,48],"texture":0},"south":{"uv":[64,36,60,48],"texture":0},"west":{"uv":[52,36,48,48],"texture":0},"up":{"uv":[52,36,56,32],"texture":0},"down":{"uv":[56,32,60,36],"texture":0}},"type":"cube","uuid":"92e4165d-8268-5063-8211-7221aae1b76e"},{"name":"left_boot","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-4,0,-2],"to":[0,4,2],"autouv":0,"color":2,"inflate":0.3,"origin":[0,0,0],"uv_offset":[16,40],"faces":{"north":{"uv":[20,44,24,48],"texture":0},"east":{"uv":[16,44,20,48],"texture":0},"south":{"uv":[28,44,32,48],"texture":0},"west":{"uv":[24,44,28,48],"texture":0},"up":{"uv":[24,44,20,40],"texture":0},"down":{"uv":[28,40,24,44],"texture":0}},"type":"cube","uuid":"0c26f55d-2961-ea9c-ea83-843b23d37a98"},{"name":"right_boot","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[0,0,-2],"to":[4,4,2],"autouv":0,"color":3,"inflate":0.3,"origin":[0,0,0],"uv_offset":[16,40],"faces":{"north":{"uv":[20,44,24,48],"texture":0},"east":{"uv":[16,44,20,48],"texture":0},"south":{"uv":[28,44,32,48],"texture":0},"west":{"uv":[24,44,28,48],"texture":0},"up":{"uv":[24,44,20,40],"texture":0},"down":{"uv":[28,40,24,44],"texture":0}},"type":"cube","uuid":"3bb185dc-1abc-3fe5-b883-7af7889a4f3f"},{"name":"strap","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-0.2,11.95,-3],"to":[9.8,14.95,3],"autouv":0,"color":2,"rotation":[0,0,22.5],"origin":[0.75,1.75,0],"uv_offset":[0,48],"faces":{"north":{"uv":[6,54,16,57],"texture":0},"east":{"uv":[0,54,6,57],"texture":0},"south":{"uv":[22,54,32,57],"texture":0},"west":{"uv":[16,54,22,57],"texture":0},"up":{"uv":[16,54,6,48],"texture":0},"down":{"uv":[26,48,16,54],"texture":0}},"type":"cube","uuid":"5595171c-e809-03ca-68ed-7115d9ffbb94"},{"name":"buckle","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[1.95,14.1,-3],"to":[4.95,17.1,3],"autouv":0,"color":6,"inflate":0.1,"origin":[0.75,0,0],"uv_offset":[32,48],"faces":{"north":{"uv":[38,54,41,57],"texture":0},"east":{"uv":[32,54,38,57],"texture":0},"south":{"uv":[47,54,50,57],"texture":0},"west":{"uv":[41,54,47,57],"texture":0},"up":{"uv":[41,54,38,48],"texture":0},"down":{"uv":[44,48,41,54],"texture":0}},"type":"cube","uuid":"4cb47817-d5c8-81f7-ce53-eddcf011ee3e"},{"name":"right_horn","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[4,28.5,0],"to":[12,36.5,0],"autouv":0,"color":0,"mirror_uv":true,"rotation":[0,0,75],"origin":[5,32.5,0],"uv_offset":[24,0],"faces":{"north":{"uv":[32,0,24,8],"texture":0},"east":{"uv":[32,0,32,8],"texture":0},"south":{"uv":[40,0,32,8],"texture":0},"west":{"uv":[24,0,24,8],"texture":0},"up":{"uv":[24,0,32,0],"texture":0},"down":{"uv":[32,0,40,0],"texture":0}},"type":"cube","uuid":"00b324ac-7d37-b5d8-4201-5e85760400af"},{"name":"left_horn","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-12,28.6,0],"to":[-4,36.6,0],"autouv":0,"color":0,"rotation":[0,0,-75],"origin":[-5,32.6,0],"uv_offset":[24,0],"faces":{"north":{"uv":[24,0,32,8],"texture":0},"east":{"uv":[24,0,24,8],"texture":0},"south":{"uv":[32,0,40,8],"texture":0},"west":{"uv":[32,0,32,8],"texture":0},"up":{"uv":[32,0,24,0],"texture":0},"down":{"uv":[40,0,32,0],"texture":0}},"type":"cube","uuid":"a9e5e1e6-b585-094b-da8c-835678984610"}],"groups":[{"name":"head","uuid":"340a6871-310d-6a24-43ff-ddf85346d82f","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[-4,32,-4],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"body","uuid":"303b4664-b31a-5ba5-b6bf-ed9ee71370bb","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[-4,24,-2],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"rightArm","uuid":"d74e7c20-c22d-d9d4-9aef-4faded63fc4e","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[4,24,-2],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"leftArm","uuid":"63506f26-b3de-59cb-b312-386615c5bc0d","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[-8,24,-2],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"rightLeg","uuid":"e46d3e87-8f26-2f4d-963a-bdf55792cfa6","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[0,12,-2],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"leftLeg","uuid":"39fd2105-d958-5410-6032-afffb1ec9e1d","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[-4,12,-2],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"sash","uuid":"01148eb6-5484-1b29-ae31-deabde803a47","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[-5.45,13.2,-3],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":false,"primary_selected":false},{"name":"horns","uuid":"05a5b561-43ff-8683-4ce7-978731e9d8c5","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[5,32.5,0],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false}],"outliner":[{"uuid":"340a6871-310d-6a24-43ff-ddf85346d82f","isOpen":true,"children":[{"uuid":"05a5b561-43ff-8683-4ce7-978731e9d8c5","isOpen":true,"children":["00b324ac-7d37-b5d8-4201-5e85760400af","a9e5e1e6-b585-094b-da8c-835678984610"]},"7c76db23-25f3-7b95-ac9f-2e9bcf0f9759","bb31bdb7-b4f5-8fd6-0631-ad789263fce7"]},{"uuid":"303b4664-b31a-5ba5-b6bf-ed9ee71370bb","isOpen":true,"children":["bd4844dd-2a0e-3f4e-fa0b-7da3d2887e40","94261ed0-a8a6-8d18-ac42-13127515d848",{"uuid":"01148eb6-5484-1b29-ae31-deabde803a47","isOpen":false,"children":["5595171c-e809-03ca-68ed-7115d9ffbb94","4cb47817-d5c8-81f7-ce53-eddcf011ee3e"]}]},{"uuid":"d74e7c20-c22d-d9d4-9aef-4faded63fc4e","isOpen":true,"children":["fd5e025b-d5f6-8bd3-d981-66783aa2a923"]},{"uuid":"63506f26-b3de-59cb-b312-386615c5bc0d","isOpen":true,"children":["9c87cab3-03d4-97ee-21bd-9815d0e98d53"]},{"uuid":"e46d3e87-8f26-2f4d-963a-bdf55792cfa6","isOpen":true,"children":["e035f1e5-f5da-d86a-efe6-d73b506ae82e","3bb185dc-1abc-3fe5-b883-7af7889a4f3f"]},{"uuid":"39fd2105-d958-5410-6032-afffb1ec9e1d","isOpen":true,"children":["92e4165d-8268-5063-8211-7221aae1b76e","0c26f55d-2961-ea9c-ea83-843b23d37a98"]}],"textures":[{"name":"","path":"","folder":"","namespace":"","id":"0","group":"","scope":0,"width":64,"height":64,"uv_width":64,"uv_height":64,"particle":false,"use_as_default":false,"layers_enabled":false,"sync_to_project":"","file_format":"png","render_mode":"default","render_sides":"auto","wrap_mode":"limited","pbr_channel":"color","fps":7,"frame_time":1,"frame_order_type":"loop","frame_order":"","frame_interpolate":false,"visible":true,"internal":true,"saved":false,"uuid":"af3aae18-9f98-d4de-7b0f-c58cd9965743","source":"data:image/png;base64,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"}]} \ No newline at end of file +{"meta":{"format_version":"5.0","model_format":"modded_entity","box_uv":true},"name":"Robes2","model_identifier":"","modded_entity_entity_class":"","modded_entity_version":"1.17","modded_entity_flip_y":true,"visible_box":[1,1,0],"variable_placeholders":"","multi_file_ruleset":"","variable_placeholder_buttons":[],"timeline_setups":[],"unhandled_root_fields":{},"resolution":{"width":64,"height":64},"elements":[{"name":"hood_outer","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-4,24,-4],"to":[4,32,4],"autouv":0,"color":4,"inflate":0.4,"origin":[0,0,0],"uv_offset":[0,16],"faces":{"north":{"uv":[8,24,16,32],"texture":0},"east":{"uv":[0,24,8,32],"texture":0},"south":{"uv":[24,24,32,32],"texture":0},"west":{"uv":[16,24,24,32],"texture":0},"up":{"uv":[16,24,8,16],"texture":0},"down":{"uv":[24,16,16,24],"texture":0}},"type":"cube","uuid":"bb31bdb7-b4f5-8fd6-0631-ad789263fce7"},{"name":"hood_inner","box_uv":true,"render_order":"behind","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-4,24,-4],"to":[4,32,4],"autouv":0,"color":8,"inflate":0.3,"origin":[0,0,0],"faces":{"north":{"uv":[8,8,16,16],"texture":0},"east":{"uv":[0,8,8,16],"texture":0},"south":{"uv":[24,8,32,16],"texture":0},"west":{"uv":[16,8,24,16],"texture":0},"up":{"uv":[16,8,8,0],"texture":0},"down":{"uv":[24,0,16,8],"texture":0}},"type":"cube","uuid":"7c76db23-25f3-7b95-ac9f-2e9bcf0f9759"},{"name":"body_outer","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-4,12,-2],"to":[4,24,2],"autouv":0,"color":5,"inflate":0.4,"origin":[0,0,0],"uv_offset":[40,16],"faces":{"north":{"uv":[44,20,52,32],"texture":0},"east":{"uv":[40,20,44,32],"texture":0},"south":{"uv":[56,20,64,32],"texture":0},"west":{"uv":[52,20,56,32],"texture":0},"up":{"uv":[52,20,44,16],"texture":0},"down":{"uv":[60,16,52,20],"texture":0}},"type":"cube","uuid":"94261ed0-a8a6-8d18-ac42-13127515d848"},{"name":"body_inner","box_uv":true,"render_order":"behind","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-4,12,-2],"to":[4,24,2],"autouv":0,"color":3,"inflate":0.3,"origin":[0,0,0],"uv_offset":[40,0],"faces":{"north":{"uv":[44,4,52,16],"texture":0},"east":{"uv":[40,4,44,16],"texture":0},"south":{"uv":[56,4,64,16],"texture":0},"west":{"uv":[52,4,56,16],"texture":0},"up":{"uv":[52,4,44,0],"texture":0},"down":{"uv":[60,0,52,4],"texture":0}},"type":"cube","uuid":"bd4844dd-2a0e-3f4e-fa0b-7da3d2887e40"},{"name":"left_sleeve","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-8,12,-2],"to":[-4,24,2],"autouv":0,"color":3,"mirror_uv":true,"inflate":0.3,"origin":[0,0,0],"uv_offset":[0,32],"faces":{"north":{"uv":[8,36,4,48],"texture":0},"east":{"uv":[12,36,8,48],"texture":0},"south":{"uv":[16,36,12,48],"texture":0},"west":{"uv":[4,36,0,48],"texture":0},"up":{"uv":[4,36,8,32],"texture":0},"down":{"uv":[8,32,12,36],"texture":0}},"type":"cube","uuid":"9c87cab3-03d4-97ee-21bd-9815d0e98d53"},{"name":"right_sleeve","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[4,12,-2],"to":[8,24,2],"autouv":0,"color":0,"inflate":0.3,"origin":[0,0,0],"uv_offset":[0,32],"faces":{"north":{"uv":[4,36,8,48],"texture":0},"east":{"uv":[0,36,4,48],"texture":0},"south":{"uv":[12,36,16,48],"texture":0},"west":{"uv":[8,36,12,48],"texture":0},"up":{"uv":[8,36,4,32],"texture":0},"down":{"uv":[12,32,8,36],"texture":0}},"type":"cube","uuid":"fd5e025b-d5f6-8bd3-d981-66783aa2a923"},{"name":"right_legging","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[0,0,-2],"to":[4,12,2],"autouv":0,"color":3,"inflate":0.35,"origin":[0,0,0],"uv_offset":[48,32],"faces":{"north":{"uv":[52,36,56,48],"texture":0},"east":{"uv":[48,36,52,48],"texture":0},"south":{"uv":[60,36,64,48],"texture":0},"west":{"uv":[56,36,60,48],"texture":0},"up":{"uv":[56,36,52,32],"texture":0},"down":{"uv":[60,32,56,36],"texture":0}},"type":"cube","uuid":"e035f1e5-f5da-d86a-efe6-d73b506ae82e"},{"name":"left_legging","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-4,0,-2],"to":[0,12,2],"autouv":0,"color":9,"mirror_uv":true,"inflate":0.35,"origin":[0,0,0],"uv_offset":[48,32],"faces":{"north":{"uv":[56,36,52,48],"texture":0},"east":{"uv":[60,36,56,48],"texture":0},"south":{"uv":[64,36,60,48],"texture":0},"west":{"uv":[52,36,48,48],"texture":0},"up":{"uv":[52,36,56,32],"texture":0},"down":{"uv":[56,32,60,36],"texture":0}},"type":"cube","uuid":"92e4165d-8268-5063-8211-7221aae1b76e"},{"name":"left_boot","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-4,0,-2],"to":[0,4,2],"autouv":0,"color":2,"inflate":0.3,"origin":[0,0,0],"uv_offset":[16,40],"faces":{"north":{"uv":[20,44,24,48],"texture":0},"east":{"uv":[16,44,20,48],"texture":0},"south":{"uv":[28,44,32,48],"texture":0},"west":{"uv":[24,44,28,48],"texture":0},"up":{"uv":[24,44,20,40],"texture":0},"down":{"uv":[28,40,24,44],"texture":0}},"type":"cube","uuid":"0c26f55d-2961-ea9c-ea83-843b23d37a98"},{"name":"right_boot","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[0,0,-2],"to":[4,4,2],"autouv":0,"color":3,"inflate":0.3,"origin":[0,0,0],"uv_offset":[16,40],"faces":{"north":{"uv":[20,44,24,48],"texture":0},"east":{"uv":[16,44,20,48],"texture":0},"south":{"uv":[28,44,32,48],"texture":0},"west":{"uv":[24,44,28,48],"texture":0},"up":{"uv":[24,44,20,40],"texture":0},"down":{"uv":[28,40,24,44],"texture":0}},"type":"cube","uuid":"3bb185dc-1abc-3fe5-b883-7af7889a4f3f"},{"name":"strap","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-9.8,11.95,-3],"to":[0.2,14.95,3],"autouv":0,"color":2,"mirror_uv":true,"rotation":[0,0,-22.5],"origin":[-0.75,1.75,0],"uv_offset":[0,48],"faces":{"north":{"uv":[16,54,6,57],"texture":0},"east":{"uv":[22,54,16,57],"texture":0},"south":{"uv":[32,54,22,57],"texture":0},"west":{"uv":[6,54,0,57],"texture":0},"up":{"uv":[6,54,16,48],"texture":0},"down":{"uv":[16,48,26,54],"texture":0}},"type":"cube","uuid":"5595171c-e809-03ca-68ed-7115d9ffbb94"},{"name":"buckle","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-4.95,14.1,-3],"to":[-1.95,17.1,3],"autouv":0,"color":6,"mirror_uv":true,"inflate":0.1,"origin":[-0.75,0,0],"uv_offset":[32,48],"faces":{"north":{"uv":[41,54,38,57],"texture":0},"east":{"uv":[47,54,41,57],"texture":0},"south":{"uv":[50,54,47,57],"texture":0},"west":{"uv":[38,54,32,57],"texture":0},"up":{"uv":[38,54,41,48],"texture":0},"down":{"uv":[41,48,44,54],"texture":0}},"type":"cube","uuid":"4cb47817-d5c8-81f7-ce53-eddcf011ee3e"},{"name":"right_horn","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[4,28.5,0],"to":[12,36.5,0],"autouv":0,"color":0,"mirror_uv":true,"rotation":[0,0,75],"origin":[5,32.5,0],"uv_offset":[24,0],"faces":{"north":{"uv":[32,0,24,8],"texture":0},"east":{"uv":[32,0,32,8],"texture":0},"south":{"uv":[40,0,32,8],"texture":0},"west":{"uv":[24,0,24,8],"texture":0},"up":{"uv":[24,0,32,0],"texture":0},"down":{"uv":[32,0,40,0],"texture":0}},"type":"cube","uuid":"00b324ac-7d37-b5d8-4201-5e85760400af"},{"name":"left_horn","box_uv":true,"render_order":"default","locked":false,"export":true,"scope":0,"allow_mirror_modeling":true,"from":[-12,28.6,0],"to":[-4,36.6,0],"autouv":0,"color":0,"rotation":[0,0,-75],"origin":[-5,32.6,0],"uv_offset":[24,0],"faces":{"north":{"uv":[24,0,32,8],"texture":0},"east":{"uv":[24,0,24,8],"texture":0},"south":{"uv":[32,0,40,8],"texture":0},"west":{"uv":[32,0,32,8],"texture":0},"up":{"uv":[32,0,24,0],"texture":0},"down":{"uv":[40,0,32,0],"texture":0}},"type":"cube","uuid":"a9e5e1e6-b585-094b-da8c-835678984610"}],"groups":[{"name":"head","uuid":"340a6871-310d-6a24-43ff-ddf85346d82f","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[-4,32,-4],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"body","uuid":"303b4664-b31a-5ba5-b6bf-ed9ee71370bb","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[-4,24,-2],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"rightArm","uuid":"d74e7c20-c22d-d9d4-9aef-4faded63fc4e","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[4,24,-2],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"leftArm","uuid":"63506f26-b3de-59cb-b312-386615c5bc0d","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[-8,24,-2],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"rightLeg","uuid":"e46d3e87-8f26-2f4d-963a-bdf55792cfa6","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[0,12,-2],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"leftLeg","uuid":"39fd2105-d958-5410-6032-afffb1ec9e1d","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[-4,12,-2],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"name":"sash","uuid":"01148eb6-5484-1b29-ae31-deabde803a47","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[5.45,13.2,-3],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":false,"primary_selected":true},{"name":"horns","uuid":"05a5b561-43ff-8683-4ce7-978731e9d8c5","export":true,"locked":false,"scope":0,"selected":false,"_static":{"properties":{},"temp_data":{}},"origin":[5,32.5,0],"rotation":[0,0,0],"color":0,"children":[],"reset":false,"shade":true,"mirror_uv":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false}],"outliner":[{"uuid":"340a6871-310d-6a24-43ff-ddf85346d82f","isOpen":true,"children":[{"uuid":"05a5b561-43ff-8683-4ce7-978731e9d8c5","isOpen":true,"children":["00b324ac-7d37-b5d8-4201-5e85760400af","a9e5e1e6-b585-094b-da8c-835678984610"]},"7c76db23-25f3-7b95-ac9f-2e9bcf0f9759","bb31bdb7-b4f5-8fd6-0631-ad789263fce7"]},{"uuid":"303b4664-b31a-5ba5-b6bf-ed9ee71370bb","isOpen":true,"children":["bd4844dd-2a0e-3f4e-fa0b-7da3d2887e40","94261ed0-a8a6-8d18-ac42-13127515d848",{"uuid":"01148eb6-5484-1b29-ae31-deabde803a47","isOpen":false,"children":["5595171c-e809-03ca-68ed-7115d9ffbb94","4cb47817-d5c8-81f7-ce53-eddcf011ee3e"]}]},{"uuid":"d74e7c20-c22d-d9d4-9aef-4faded63fc4e","isOpen":true,"children":["fd5e025b-d5f6-8bd3-d981-66783aa2a923"]},{"uuid":"63506f26-b3de-59cb-b312-386615c5bc0d","isOpen":true,"children":["9c87cab3-03d4-97ee-21bd-9815d0e98d53"]},{"uuid":"e46d3e87-8f26-2f4d-963a-bdf55792cfa6","isOpen":true,"children":["e035f1e5-f5da-d86a-efe6-d73b506ae82e","3bb185dc-1abc-3fe5-b883-7af7889a4f3f"]},{"uuid":"39fd2105-d958-5410-6032-afffb1ec9e1d","isOpen":true,"children":["92e4165d-8268-5063-8211-7221aae1b76e","0c26f55d-2961-ea9c-ea83-843b23d37a98"]}],"textures":[{"name":"","path":"","folder":"","namespace":"","id":"0","group":"","scope":0,"width":64,"height":64,"uv_width":64,"uv_height":64,"particle":false,"use_as_default":false,"layers_enabled":false,"sync_to_project":"","file_format":"png","render_mode":"default","render_sides":"auto","wrap_mode":"limited","pbr_channel":"color","fps":7,"frame_time":1,"frame_order_type":"loop","frame_order":"","frame_interpolate":false,"visible":true,"internal":true,"saved":false,"uuid":"af3aae18-9f98-d4de-7b0f-c58cd9965743","source":"data:image/png;base64,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"}]} \ No newline at end of file From 30feb74f5b8ea68cae27782d0d2a65fd10e96fb0 Mon Sep 17 00:00:00 2001 From: Robotgiggle <88736742+Robotgiggle@users.noreply.github.com> Date: Tue, 25 Aug 2026 18:12:13 -0400 Subject: [PATCH 11/14] Add armor names --- .../hexcasting/common/items/armor/ItemRobes.java | 16 ++++++++++++++-- .../assets/hexcasting/lang/en_us.flatten.json5 | 9 +++++++++ 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/Common/src/main/java/at/petrak/hexcasting/common/items/armor/ItemRobes.java b/Common/src/main/java/at/petrak/hexcasting/common/items/armor/ItemRobes.java index d828024cfc..998d27dca2 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/items/armor/ItemRobes.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/items/armor/ItemRobes.java @@ -8,6 +8,7 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.model.geom.EntityModelSet; import net.minecraft.core.Holder; +import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EquipmentSlot; @@ -22,10 +23,10 @@ * On fabric: custom HexRobesRenderer set up from FabricHexClientInitializer (line 60) */ public class ItemRobes extends ArmorItem implements VariantItem { - public final ArmorItem.Type type; + public final Type type; private @Nullable HexRobesModel[] models; - public ItemRobes(ArmorItem.Type type, Properties properties) { + public ItemRobes(Type type, Properties properties) { super(Holder.direct(HexAPI.instance().robesMaterial()), type, properties); this.type = type; } @@ -49,6 +50,17 @@ public ResourceLocation getArmorTexture(ItemStack stack, Entity entity, Equipmen return HexAPI.modLoc("textures/armor/robes"+getVariant(stack)+".png"); } + @Override + public Component getName(ItemStack pStack) { + var descID = this.getDescriptionId(pStack); + var robesItem = (ItemRobes) pStack.getItem(); + if (robesItem.type == Type.LEGGINGS) { + return Component.translatable(descID + "." + robesItem.getVariant(pStack)); + } else { + return Component.translatable(descID); + } + } + @Override public int numVariants() { return 3; } } diff --git a/Common/src/main/resources/assets/hexcasting/lang/en_us.flatten.json5 b/Common/src/main/resources/assets/hexcasting/lang/en_us.flatten.json5 index 4cbf32ca26..58045bf734 100644 --- a/Common/src/main/resources/assets/hexcasting/lang/en_us.flatten.json5 +++ b/Common/src/main/resources/assets/hexcasting/lang/en_us.flatten.json5 @@ -62,6 +62,15 @@ abacus: "Abacus", jeweler_hammer: "Jeweler's Hammer", sub_sandwich: "Submarine Sandwich", + + robes: { + hood: "Grand Caster Hood", + tunic: "Grand Caster Tunic", + "legs.0": "Grand Caster Robe", + "legs.1": "Grand Caster Pants", + "legs.2": "Grand Caster Leggings", + boots: "Grand Caster Boots", + }, dye_colorizer_: { white: "White Pigment", From 32c1521e80e235ce75adf11a0118c7bc9a31e69e Mon Sep 17 00:00:00 2001 From: Robotgiggle <88736742+Robotgiggle@users.noreply.github.com> Date: Tue, 25 Aug 2026 19:32:03 -0400 Subject: [PATCH 12/14] Properly register the armor material --- .../java/at/petrak/hexcasting/api/HexAPI.java | 14 -------- .../hexcasting/common/impl/HexAPIImpl.java | 15 -------- .../common/items/armor/ItemRobes.java | 3 +- .../common/lib/HexArmorMaterials.java | 36 +++++++++++++++++++ .../hexcasting/fabric/FabricHexInitializer.kt | 10 ++---- .../fabric/client/HexRobesRenderer.java | 3 +- .../hexcasting/forge/ForgeHexInitializer.java | 1 + 7 files changed, 43 insertions(+), 39 deletions(-) create mode 100644 Common/src/main/java/at/petrak/hexcasting/common/lib/HexArmorMaterials.java diff --git a/Common/src/main/java/at/petrak/hexcasting/api/HexAPI.java b/Common/src/main/java/at/petrak/hexcasting/api/HexAPI.java index c0023ece4f..e25faade11 100644 --- a/Common/src/main/java/at/petrak/hexcasting/api/HexAPI.java +++ b/Common/src/main/java/at/petrak/hexcasting/api/HexAPI.java @@ -158,20 +158,6 @@ default FrozenPigment getColorizer(Player player) { return FrozenPigment.DEFAULT.get(); } - ArmorMaterial DUMMY_ARMOR_MATERIAL = new ArmorMaterial( - Collections.emptyMap(), - 0, - SoundEvents.ARMOR_EQUIP_LEATHER, - () -> Ingredient.EMPTY, - Collections.emptyList(), - 0, - 0 - ); - - default ArmorMaterial robesMaterial() { - return DUMMY_ARMOR_MATERIAL; - } - /** * Location in the userdata of the ravenmind */ diff --git a/Common/src/main/java/at/petrak/hexcasting/common/impl/HexAPIImpl.java b/Common/src/main/java/at/petrak/hexcasting/common/impl/HexAPIImpl.java index ccab5c3c8b..0e461a6df1 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/impl/HexAPIImpl.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/impl/HexAPIImpl.java @@ -112,19 +112,4 @@ public Consumer defaultBrainsweepingBehavior() { public FrozenPigment getColorizer(Player player) { return IXplatAbstractions.INSTANCE.getPigment(player); } - - ArmorMaterial ARMOR_MATERIAL = new ArmorMaterial( - Collections.emptyMap(), - 0, - SoundEvents.ARMOR_EQUIP_LEATHER, - () -> Ingredient.EMPTY, - List.of(new ArmorMaterial.Layer(HexAPI.modLoc("robes"))), - 0, - 0 - ); - - @Override - public ArmorMaterial robesMaterial() { - return ARMOR_MATERIAL; - } } diff --git a/Common/src/main/java/at/petrak/hexcasting/common/items/armor/ItemRobes.java b/Common/src/main/java/at/petrak/hexcasting/common/items/armor/ItemRobes.java index 998d27dca2..0e3d52798f 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/items/armor/ItemRobes.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/items/armor/ItemRobes.java @@ -5,6 +5,7 @@ import at.petrak.hexcasting.api.item.VariantItem; import at.petrak.hexcasting.client.model.HexModelLayers; import at.petrak.hexcasting.client.model.HexRobesModel; +import at.petrak.hexcasting.common.lib.HexArmorMaterials; import net.minecraft.client.Minecraft; import net.minecraft.client.model.geom.EntityModelSet; import net.minecraft.core.Holder; @@ -27,7 +28,7 @@ public class ItemRobes extends ArmorItem implements VariantItem { private @Nullable HexRobesModel[] models; public ItemRobes(Type type, Properties properties) { - super(Holder.direct(HexAPI.instance().robesMaterial()), type, properties); + super(HexArmorMaterials.ROBES, type, properties); this.type = type; } diff --git a/Common/src/main/java/at/petrak/hexcasting/common/lib/HexArmorMaterials.java b/Common/src/main/java/at/petrak/hexcasting/common/lib/HexArmorMaterials.java new file mode 100644 index 0000000000..f2cfd6b1f0 --- /dev/null +++ b/Common/src/main/java/at/petrak/hexcasting/common/lib/HexArmorMaterials.java @@ -0,0 +1,36 @@ +package at.petrak.hexcasting.common.lib; + +import at.petrak.hexcasting.api.HexAPI; +import at.petrak.hexcasting.xplat.IXplatAbstractions; +import at.petrak.hexcasting.xplat.IXplatRegister; +import net.minecraft.core.Holder; +import net.minecraft.core.registries.Registries; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.item.ArmorItem.Type; +import net.minecraft.world.item.ArmorMaterial; +import net.minecraft.world.item.ArmorMaterials; +import net.minecraft.world.item.alchemy.Potion; +import net.minecraft.world.item.crafting.Ingredient; + +import java.util.Collections; +import java.util.List; +import java.util.Map; + +public class HexArmorMaterials { + private static final IXplatRegister REGISTER = IXplatAbstractions.INSTANCE.createRegistar(Registries.ARMOR_MATERIAL); + + public static void register() { + REGISTER.registerAll(); + } + + public static final Holder ROBES = REGISTER.registerHolder("robes", () -> + new ArmorMaterial( + Map.of(), // no defense here since it's specified with the other attributes in ItemRobes + ArmorMaterials.GOLD.value().enchantmentValue(), + SoundEvents.ARMOR_EQUIP_LEATHER, + () -> Ingredient.EMPTY, // TODO: repair with whatever it's crafted with + List.of(new ArmorMaterial.Layer(HexAPI.modLoc("robes"))), + 0, 0 // no toughness or knockback resistance + )); +} diff --git a/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt b/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt index 878e371aeb..505cb68926 100644 --- a/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt +++ b/Fabric/src/main/java/at/petrak/hexcasting/fabric/FabricHexInitializer.kt @@ -5,11 +5,7 @@ import at.petrak.hexcasting.api.addldata.ADMediaHolder import at.petrak.hexcasting.api.advancements.HexAdvancementTriggers import at.petrak.hexcasting.api.casting.ActionRegistryEntry import at.petrak.hexcasting.api.casting.iota.DoubleIota -import at.petrak.hexcasting.api.item.HexHolderItem -import at.petrak.hexcasting.api.item.IotaHolderItem -import at.petrak.hexcasting.api.item.MediaHolderItem -import at.petrak.hexcasting.api.item.PigmentItem -import at.petrak.hexcasting.api.item.VariantItem +import at.petrak.hexcasting.api.item.* import at.petrak.hexcasting.api.misc.MediaConstants import at.petrak.hexcasting.api.mod.HexConfig import at.petrak.hexcasting.api.mod.HexStatistics @@ -23,7 +19,6 @@ import at.petrak.hexcasting.common.casting.actions.spells.great.OpAltiora import at.petrak.hexcasting.common.command.PatternResKeyArgument import at.petrak.hexcasting.common.entities.HexEntities import at.petrak.hexcasting.common.items.ItemJewelerHammer -import at.petrak.hexcasting.common.items.magic.ItemMediaBattery import at.petrak.hexcasting.common.items.storage.ItemScroll import at.petrak.hexcasting.common.lib.* import at.petrak.hexcasting.common.lib.hex.* @@ -32,8 +27,6 @@ import at.petrak.hexcasting.common.misc.BrainsweepingEvents import at.petrak.hexcasting.common.misc.PlayerPositionRecorder import at.petrak.hexcasting.common.misc.RegisterMisc import at.petrak.hexcasting.common.recipe.HexRecipeStuffRegistry -import at.petrak.hexcasting.common.lib.HexBrainsweepeeIngredients -import at.petrak.hexcasting.common.lib.HexStateIngredients import at.petrak.hexcasting.fabric.cc.HexCardinalComponents import at.petrak.hexcasting.fabric.cc.adimpl.* import at.petrak.hexcasting.fabric.event.VillagerConversionCallback @@ -215,6 +208,7 @@ object FabricHexInitializer : ModInitializer { HexRecipeStuffRegistry.register() HexParticles.register() + HexArmorMaterials.register() HexLootFunctions.register() diff --git a/Fabric/src/main/java/at/petrak/hexcasting/fabric/client/HexRobesRenderer.java b/Fabric/src/main/java/at/petrak/hexcasting/fabric/client/HexRobesRenderer.java index ae9737132b..48607da62c 100644 --- a/Fabric/src/main/java/at/petrak/hexcasting/fabric/client/HexRobesRenderer.java +++ b/Fabric/src/main/java/at/petrak/hexcasting/fabric/client/HexRobesRenderer.java @@ -2,6 +2,7 @@ import at.petrak.hexcasting.api.HexAPI; import at.petrak.hexcasting.common.items.armor.ItemRobes; +import at.petrak.hexcasting.common.lib.HexArmorMaterials; import at.petrak.hexcasting.common.lib.HexItems; import net.fabricmc.fabric.api.client.rendering.v1.ArmorRenderer; import net.minecraft.world.item.Item; @@ -22,7 +23,7 @@ public static void init() { ItemRobes armor = (ItemRobes) stack.getItem(); var model = armor.getArmorModels()[armor.getVariant(stack)]; - var texture = armor.getArmorTexture(stack, entity, slot, HexAPI.instance().robesMaterial().layers().getFirst(), false); + var texture = armor.getArmorTexture(stack, entity, slot, HexArmorMaterials.ROBES.value().layers().getFirst(), false); contextModel.copyPropertiesTo(model); ArmorRenderer.renderPart(matrices, vertexConsumers, light, stack, model, texture); diff --git a/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java b/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java index 73c5f84471..d07bdeaef5 100644 --- a/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java +++ b/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java @@ -131,6 +131,7 @@ private static void initRegistry() { HexMobEffects.register(); HexPotions.register(); HexParticles.register(); + HexArmorMaterials.register(); HexAdvancementTriggers.register(); From 1d368d67d07cca316a90ebd9ee149a8652ff3969 Mon Sep 17 00:00:00 2001 From: Robotgiggle <88736742+Robotgiggle@users.noreply.github.com> Date: Tue, 25 Aug 2026 21:01:23 -0400 Subject: [PATCH 13/14] Fix scaling on variant2 leg/boot --- .../java/at/petrak/hexcasting/client/model/HexRobesModel.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Common/src/main/java/at/petrak/hexcasting/client/model/HexRobesModel.java b/Common/src/main/java/at/petrak/hexcasting/client/model/HexRobesModel.java index 707aa30b36..c9c24a28dc 100644 --- a/Common/src/main/java/at/petrak/hexcasting/client/model/HexRobesModel.java +++ b/Common/src/main/java/at/petrak/hexcasting/client/model/HexRobesModel.java @@ -252,12 +252,12 @@ public static LayerDefinition variant2() { rightLeg.addOrReplaceChild("right_skirt", CubeListBuilder.create() - .texOffs(48, 32).addBox(-4.0F, 0.0F, 0.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.3F)), + .texOffs(48, 32).addBox(-4.0F, 0.0F, 0.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.35F)), PartPose.offset(2.0F, 0.0F, -2.0F)); rightLeg.addOrReplaceChild("right_boot", CubeListBuilder.create() - .texOffs(16, 40).addBox(-4.0F, 8.0F, 0.0F, 4.0F, 4.0F, 4.0F, new CubeDeformation(0.35F)), + .texOffs(16, 40).addBox(-4.0F, 8.0F, 0.0F, 4.0F, 4.0F, 4.0F, new CubeDeformation(0.3F)), PartPose.offset(2.0F, 0.0F, -2.0F)); var leftLeg = root.addOrReplaceChild("left_leg", CubeListBuilder.create(), PartPose.ZERO); From 6ae58762a7cc31a7e359206a591d1e1c101e8c10 Mon Sep 17 00:00:00 2001 From: Robotgiggle Date: Tue, 8 Sep 2026 19:31:07 -0400 Subject: [PATCH 14/14] Remove commented out code --- .../petrak/hexcasting/forge/ForgeHexClientInitializer.java | 6 ------ .../hexcasting/forge/datagen/xplat/HexItemModels.java | 3 --- 2 files changed, 9 deletions(-) diff --git a/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexClientInitializer.java b/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexClientInitializer.java index 342a95abf0..b6233f91bf 100644 --- a/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexClientInitializer.java +++ b/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexClientInitializer.java @@ -158,16 +158,10 @@ public static void addPlayerLayers(EntityRenderersEvent.AddLayers evt) { @SubscribeEvent public static void registerArmorRenderer(RegisterClientExtensionsEvent evt) { evt.registerItem(new IClientItemExtensions() { - //private final Map[]> MODEL_SETS = new Object2ObjectArrayMap<>(); - @Override public HumanoidModel getHumanoidArmorModel(LivingEntity livingEntity, ItemStack itemStack, EquipmentSlot equipmentSlot, HumanoidModel original) { ItemRobes armor = (ItemRobes) itemStack.getItem(); return armor.getArmorModels()[armor.getVariant(itemStack)]; - -// var variant = itemStack.get(HexDataComponents.ITEM_VARIANT.get()); -// var modelSet = MODEL_SETS.computeIfAbsent(equipmentSlot, ItemRobes::provideArmorModelsForSlot); -// return variant != null ? modelSet[variant] : modelSet[0]; } }, HexItems.ROBES_HOOD.get(), HexItems.ROBES_TUNIC.get(), HexItems.ROBES_LEGS.get(), HexItems.ROBES_BOOTS.get()); } diff --git a/Neoforge/src/main/java/at/petrak/hexcasting/forge/datagen/xplat/HexItemModels.java b/Neoforge/src/main/java/at/petrak/hexcasting/forge/datagen/xplat/HexItemModels.java index 439b3d6d19..8e7f349111 100644 --- a/Neoforge/src/main/java/at/petrak/hexcasting/forge/datagen/xplat/HexItemModels.java +++ b/Neoforge/src/main/java/at/petrak/hexcasting/forge/datagen/xplat/HexItemModels.java @@ -282,9 +282,6 @@ private void buildStaff(Item item, String name) { } private void buildRobes(Item item, String type, int numVariants) { - // TODO: actually handle the variants -// singleTexture("item/" + getPath(item), ResourceLocation.withDefaultNamespace("item/generated"), -// "layer0", modLoc("item/robes/1_"+type)); var name = "item/" + getPath(item); var builder = getBuilder(name); for (int i = 0; i < numVariants; i++) {