diff --git a/Common/src/main/java/at/petrak/hexcasting/common/items/ItemLens.java b/Common/src/main/java/at/petrak/hexcasting/common/items/ItemLens.java index 5f9772ec4d..290ff0b1fa 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/items/ItemLens.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/items/ItemLens.java @@ -9,11 +9,13 @@ import net.minecraft.core.dispenser.BlockSource; import net.minecraft.core.dispenser.OptionalDispenseItemBehavior; import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.entity.EquipmentSlotGroup; import net.minecraft.world.entity.ai.attributes.Attribute; import net.minecraft.world.entity.ai.attributes.AttributeModifier; import net.minecraft.world.item.ArmorItem; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.component.ItemAttributeModifiers; import net.minecraft.world.level.block.DispenserBlock; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -29,7 +31,7 @@ public class ItemLens extends Item implements HexBaubleItem { // Wearable, HexAPI.modLoc("scrying_lens_sight"), 1.0, AttributeModifier.Operation.ADD_VALUE); public ItemLens(Properties pProperties) { - super(pProperties); + super(pProperties.attributes(lensAttributeModifiers())); DispenserBlock.registerBehavior(this, new OptionalDispenseItemBehavior() { protected @NotNull ItemStack execute(@NotNull BlockSource world, @NotNull ItemStack stack) { this.setSuccess(ArmorItem.dispenseArmor(world, stack)); @@ -38,6 +40,15 @@ public ItemLens(Properties pProperties) { }); } + private static ItemAttributeModifiers lensAttributeModifiers() { + ItemAttributeModifiers.Builder builder = ItemAttributeModifiers.builder(); + builder.add(HexAttributes.GRID_ZOOM, GRID_ZOOM, EquipmentSlotGroup.HAND); + builder.add(HexAttributes.GRID_ZOOM, GRID_ZOOM, EquipmentSlotGroup.HEAD); + builder.add(HexAttributes.SCRY_SIGHT, SCRY_SIGHT, EquipmentSlotGroup.HAND); + builder.add(HexAttributes.SCRY_SIGHT, SCRY_SIGHT, EquipmentSlotGroup.HEAD); + return builder.build(); + } + @Override public Multimap, AttributeModifier> getHexBaubleAttrs(ItemStack stack) { HashMultimap, AttributeModifier> out = HashMultimap.create(); diff --git a/Common/src/main/java/at/petrak/hexcasting/interop/HexInterop.java b/Common/src/main/java/at/petrak/hexcasting/interop/HexInterop.java index f0c878373b..9a9cd18b57 100644 --- a/Common/src/main/java/at/petrak/hexcasting/interop/HexInterop.java +++ b/Common/src/main/java/at/petrak/hexcasting/interop/HexInterop.java @@ -1,11 +1,16 @@ package at.petrak.hexcasting.interop; +import at.petrak.hexcasting.common.lib.HexItems; +import at.petrak.hexcasting.interop.accessories.AccessoriesApiInterop; +import at.petrak.hexcasting.interop.accessories.LensAccessoryRenderer; import at.petrak.hexcasting.interop.inline.InlineHex; import at.petrak.hexcasting.interop.inline.InlineHexClient; import at.petrak.hexcasting.interop.pehkui.PehkuiInterop; import at.petrak.hexcasting.xplat.IClientXplatAbstractions; import at.petrak.hexcasting.xplat.IXplatAbstractions; import at.petrak.hexcasting.xplat.Platform; +import io.wispforest.accessories.api.AccessoriesAPI; +import io.wispforest.accessories.api.client.AccessoriesRendererRegistry; import vazkii.patchouli.api.PatchouliAPI; import java.util.List; @@ -14,14 +19,7 @@ public class HexInterop { public static final String PATCHOULI_ANY_INTEROP_FLAG = "hexcasting:any_interop"; public static final String PEHKUI_ID = "pehkui"; - - public static final class Forge { - public static final String CURIOS_API_ID = "curios"; - } - - public static final class Fabric { - public static final String ACCESSORIES_API_ID = "accessories"; - } + public static final String ACCESSORIES_ID = "accessories"; public static void init() { initPatchouli(); @@ -30,6 +28,9 @@ public static void init() { if (xplat.isModPresent(PEHKUI_ID)) { PehkuiInterop.init(); } + if (xplat.isModPresent(ACCESSORIES_ID)) { + AccessoriesApiInterop.init(); + } xplat.initPlatformSpecific(); @@ -37,8 +38,14 @@ public static void init() { } public static void clientInit() { - IClientXplatAbstractions.INSTANCE.initPlatformSpecific(); InlineHexClient.init(); + + IXplatAbstractions xplat = IXplatAbstractions.INSTANCE; + if (xplat.isModPresent(ACCESSORIES_ID)) { + AccessoriesApiInterop.clientInit(); + } + + xplat.initPlatformSpecific(); } private static void initPatchouli() { diff --git a/Fabric/src/main/java/at/petrak/hexcasting/fabric/interop/accessories/AccessoriesApiInterop.java b/Common/src/main/java/at/petrak/hexcasting/interop/accessories/AccessoriesApiInterop.java similarity index 96% rename from Fabric/src/main/java/at/petrak/hexcasting/fabric/interop/accessories/AccessoriesApiInterop.java rename to Common/src/main/java/at/petrak/hexcasting/interop/accessories/AccessoriesApiInterop.java index 2d89b7e612..6f802a204c 100644 --- a/Fabric/src/main/java/at/petrak/hexcasting/fabric/interop/accessories/AccessoriesApiInterop.java +++ b/Common/src/main/java/at/petrak/hexcasting/interop/accessories/AccessoriesApiInterop.java @@ -1,4 +1,4 @@ -package at.petrak.hexcasting.fabric.interop.accessories; +package at.petrak.hexcasting.interop.accessories; import at.petrak.hexcasting.api.misc.DiscoveryHandlers; import at.petrak.hexcasting.common.items.HexBaubleItem; @@ -15,7 +15,6 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.util.Tuple; import net.minecraft.world.item.ItemStack; import static io.wispforest.accessories.api.client.AccessoriesRendererRegistry.registerRenderer; diff --git a/Common/src/main/java/at/petrak/hexcasting/interop/accessories/LensAccessoryRenderer.java b/Common/src/main/java/at/petrak/hexcasting/interop/accessories/LensAccessoryRenderer.java new file mode 100644 index 0000000000..f66631298b --- /dev/null +++ b/Common/src/main/java/at/petrak/hexcasting/interop/accessories/LensAccessoryRenderer.java @@ -0,0 +1,23 @@ +package at.petrak.hexcasting.interop.accessories; + +import com.mojang.blaze3d.vertex.PoseStack; +import io.wispforest.accessories.api.client.AccessoryRenderer; +import io.wispforest.accessories.api.client.Side; +import io.wispforest.accessories.api.client.SimpleAccessoryRenderer; +import io.wispforest.accessories.api.slot.SlotReference; +import net.minecraft.client.model.EntityModel; +import net.minecraft.client.model.PlayerModel; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemStack; + +public class LensAccessoryRenderer implements SimpleAccessoryRenderer { + @Override + public void align(ItemStack stack, SlotReference reference, EntityModel model, PoseStack matrices) { + if (model instanceof PlayerModel playerModel) { + // Translate and scale to place the lens over the left eye + AccessoryRenderer.transformToFace(matrices, playerModel.head, Side.FRONT); + matrices.translate(0.3, 0, 0); + matrices.scale(0.625f, 0.625f, 0.625f); + } + } +} diff --git a/Fabric/src/main/resources/data/trinkets/tags/items/head/face.json b/Common/src/main/resources/data/accessories/tags/item/face.json similarity index 96% rename from Fabric/src/main/resources/data/trinkets/tags/items/head/face.json rename to Common/src/main/resources/data/accessories/tags/item/face.json index 9fae8ae720..1b39fc552e 100644 --- a/Fabric/src/main/resources/data/trinkets/tags/items/head/face.json +++ b/Common/src/main/resources/data/accessories/tags/item/face.json @@ -3,4 +3,4 @@ "values": [ "hexcasting:lens" ] -} +} \ No newline at end of file diff --git a/Fabric/src/main/java/at/petrak/hexcasting/fabric/interop/accessories/LensAccessoryRenderer.java b/Fabric/src/main/java/at/petrak/hexcasting/fabric/interop/accessories/LensAccessoryRenderer.java deleted file mode 100644 index 2e80525fe5..0000000000 --- a/Fabric/src/main/java/at/petrak/hexcasting/fabric/interop/accessories/LensAccessoryRenderer.java +++ /dev/null @@ -1,46 +0,0 @@ -package at.petrak.hexcasting.fabric.interop.accessories; - -import at.petrak.hexcasting.common.lib.HexItems; -import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Axis; -import io.wispforest.accessories.api.client.AccessoryRenderer; -import io.wispforest.accessories.api.slot.SlotReference; -import net.minecraft.client.Minecraft; -import net.minecraft.client.model.EntityModel; -import net.minecraft.client.model.PlayerModel; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.texture.OverlayTexture; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.item.ItemDisplayContext; -import net.minecraft.world.item.ItemStack; - -/** - * @author WireSegal - * Created at 9:50 AM on 7/25/22. - */ -public class LensAccessoryRenderer implements AccessoryRenderer { - @Override - @SuppressWarnings("unchecked") - public void render(ItemStack stack, SlotReference slotReference, PoseStack matrices, EntityModel model, MultiBufferSource multiBufferSource, int light, float v, float v1, float v2, float v3, float v4, float v5) { - if (stack.is(HexItems.SCRYING_LENS) && - model instanceof PlayerModel playerModel && slotReference.entity() instanceof Player) { - - // from https://github.com/Creators-of-Create/Create/blob/ee33823ed0b5084af10ed131a1626ce71db4c07e/src/main/java/com/simibubi/create/compat/curios/GogglesCurioRenderer.java - - // Translate and rotate with our head - matrices.pushPose(); - - // Translate and scale to our head - matrices.translate(0, 0, 0.3); - matrices.mulPose(Axis.ZP.rotationDegrees(180.0f)); - matrices.scale(0.625f, 0.625f, 0.625f); - - // Render - var instance = Minecraft.getInstance(); - instance.getItemRenderer().renderStatic(stack, ItemDisplayContext.HEAD, - light, OverlayTexture.NO_OVERLAY, matrices, multiBufferSource, instance.level, 0); - matrices.popPose(); - } - } -} diff --git a/Fabric/src/main/java/at/petrak/hexcasting/fabric/xplat/FabricClientXplatImpl.java b/Fabric/src/main/java/at/petrak/hexcasting/fabric/xplat/FabricClientXplatImpl.java index bd5048cdfe..80811be607 100644 --- a/Fabric/src/main/java/at/petrak/hexcasting/fabric/xplat/FabricClientXplatImpl.java +++ b/Fabric/src/main/java/at/petrak/hexcasting/fabric/xplat/FabricClientXplatImpl.java @@ -3,7 +3,6 @@ import at.petrak.hexcasting.api.client.ClientCastingStack; import at.petrak.hexcasting.fabric.cc.HexCardinalComponents; import at.petrak.hexcasting.fabric.client.ExtendedTexture; -import at.petrak.hexcasting.fabric.interop.accessories.AccessoriesApiInterop; import at.petrak.hexcasting.interop.HexInterop; import at.petrak.hexcasting.xplat.IClientXplatAbstractions; import at.petrak.hexcasting.xplat.IXplatAbstractions; @@ -44,9 +43,7 @@ public void setRenderLayer(Block block, RenderType type) { @Override public void initPlatformSpecific() { - if (IXplatAbstractions.INSTANCE.isModPresent(HexInterop.Fabric.ACCESSORIES_API_ID)) { - AccessoriesApiInterop.clientInit(); - } + // platform-specific initialization not currently necessary } @Override diff --git a/Fabric/src/main/java/at/petrak/hexcasting/fabric/xplat/FabricXplatImpl.java b/Fabric/src/main/java/at/petrak/hexcasting/fabric/xplat/FabricXplatImpl.java index 5d18904532..5f218850f8 100644 --- a/Fabric/src/main/java/at/petrak/hexcasting/fabric/xplat/FabricXplatImpl.java +++ b/Fabric/src/main/java/at/petrak/hexcasting/fabric/xplat/FabricXplatImpl.java @@ -25,7 +25,6 @@ import at.petrak.hexcasting.common.recipe.ingredient.brainsweep.BrainsweepeeIngredientType; import at.petrak.hexcasting.common.recipe.ingredient.state.StateIngredientType; import at.petrak.hexcasting.fabric.cc.HexCardinalComponents; -import at.petrak.hexcasting.fabric.interop.accessories.AccessoriesApiInterop; import at.petrak.hexcasting.fabric.recipe.FabricUnsealedIngredient; import at.petrak.hexcasting.interop.HexInterop; import at.petrak.hexcasting.interop.pehkui.PehkuiInterop; @@ -109,9 +108,7 @@ public boolean isModPresent(String id) { @Override public void initPlatformSpecific() { - if (this.isModPresent(HexInterop.Fabric.ACCESSORIES_API_ID)) { - AccessoriesApiInterop.init(); - } + // platform-specific initialization not currently necessary } // @Override diff --git a/Fabric/src/main/resources/data/trinkets/entities/hex.json b/Fabric/src/main/resources/data/trinkets/entities/hex.json deleted file mode 100644 index 6f53a620b4..0000000000 --- a/Fabric/src/main/resources/data/trinkets/entities/hex.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "entities": [ - "player" - ], - "slots": [ - "head/face" - ] -} diff --git a/Fabric/src/main/resources/fabric.mod.json b/Fabric/src/main/resources/fabric.mod.json index 1f5ad84f67..dc3946d3f0 100644 --- a/Fabric/src/main/resources/fabric.mod.json +++ b/Fabric/src/main/resources/fabric.mod.json @@ -62,7 +62,8 @@ }, "suggests": { "pehkui": ">=3.7.6", - "modmenu": ">=7.0.1" + "modmenu": ">=7.0.1", + "accessories": ">=1.1.0-beta.16+1.21.1" }, "custom": { "cardinal-components": [ 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 ae0fdf5dd0..9a050651ed 100644 --- a/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java +++ b/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java @@ -23,8 +23,6 @@ import at.petrak.hexcasting.forge.cap.CapSyncers; import at.petrak.hexcasting.forge.cap.ForgeCapabilityHandler; import at.petrak.hexcasting.forge.datagen.ForgeHexDataGenerators; -import at.petrak.hexcasting.forge.interop.curios.CuriosApiInterop; -import at.petrak.hexcasting.forge.interop.curios.CuriosRenderers; import at.petrak.hexcasting.forge.lib.ForgeHexArgumentTypeRegistry; import at.petrak.hexcasting.forge.lib.ForgeHexAttachments; import at.petrak.hexcasting.forge.lib.ForgeHexIngredientTypes; @@ -290,12 +288,6 @@ private static void initListeners() { e.add(EntityType.PLAYER, HexAttributes.AMBIT_RADIUS); e.add(EntityType.PLAYER, HexAttributes.SENTINEL_RADIUS); }); - - if (ModList.get().isLoaded(HexInterop.Forge.CURIOS_API_ID)) { - modBus.addListener(CuriosApiInterop::onClientSetup); - if(FMLEnvironment.dist == Dist.CLIENT) - modBus.addListener(CuriosRenderers::onLayerRegister); - } } // aaaauughhg diff --git a/Neoforge/src/main/java/at/petrak/hexcasting/forge/cap/ForgeCapabilityHandler.java b/Neoforge/src/main/java/at/petrak/hexcasting/forge/cap/ForgeCapabilityHandler.java index 02b06c5acb..b2b5654173 100644 --- a/Neoforge/src/main/java/at/petrak/hexcasting/forge/cap/ForgeCapabilityHandler.java +++ b/Neoforge/src/main/java/at/petrak/hexcasting/forge/cap/ForgeCapabilityHandler.java @@ -12,7 +12,6 @@ import at.petrak.hexcasting.common.lib.HexBlocks; import at.petrak.hexcasting.common.lib.HexItems; import at.petrak.hexcasting.forge.cap.adimpl.*; -import at.petrak.hexcasting.forge.interop.curios.CuriosApiInterop; import at.petrak.hexcasting.interop.HexInterop; import at.petrak.hexcasting.xplat.IXplatAbstractions; import net.minecraft.core.registries.BuiltInRegistries; @@ -37,8 +36,6 @@ public static void registerCaps(RegisterCapabilitiesEvent evt) { evt.registerItem(HexCapabilities.Item.VARIANT_ITEM, (stack, ctx) -> new CapItemVariantItem(holder, stack), item); if(item instanceof PigmentItem holder) evt.registerItem(HexCapabilities.Item.COLOR, (stack, ctx) -> new CapItemPigment(holder, stack), item); - if(item instanceof HexBaubleItem && IXplatAbstractions.INSTANCE.isModPresent(HexInterop.Forge.CURIOS_API_ID)) - CuriosApiInterop.registerCap(evt, item); } evt.registerItem( diff --git a/Neoforge/src/main/java/at/petrak/hexcasting/forge/interop/curios/CuriosApiInterop.java b/Neoforge/src/main/java/at/petrak/hexcasting/forge/interop/curios/CuriosApiInterop.java deleted file mode 100644 index fd95a3cbfd..0000000000 --- a/Neoforge/src/main/java/at/petrak/hexcasting/forge/interop/curios/CuriosApiInterop.java +++ /dev/null @@ -1,92 +0,0 @@ -package at.petrak.hexcasting.forge.interop.curios; - -import at.petrak.hexcasting.api.misc.DiscoveryHandlers; -import at.petrak.hexcasting.common.items.HexBaubleItem; -import at.petrak.hexcasting.common.items.magic.ItemCreativeUnlocker; -import com.google.common.collect.Multimap; -import net.minecraft.core.Holder; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.entity.ai.attributes.Attribute; -import net.minecraft.world.entity.ai.attributes.AttributeModifier; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.ItemStack; -import net.neoforged.fml.event.lifecycle.FMLClientSetupEvent; -import net.neoforged.neoforge.capabilities.RegisterCapabilitiesEvent; -import top.theillusivec4.curios.api.CuriosCapability; -import top.theillusivec4.curios.api.SlotContext; -import top.theillusivec4.curios.api.type.capability.ICurio; - -import java.util.*; -import top.theillusivec4.curios.api.type.capability.ICuriosItemHandler; - -public class CuriosApiInterop { - static class Wrapper implements ICurio { - private final ItemStack stack; - private final HexBaubleItem bauble; - - Wrapper(ItemStack stack) { - this.stack = stack; - if (stack.getItem() instanceof HexBaubleItem bauble) { - this.bauble = bauble; - } else { - throw new IllegalArgumentException("Item stack " + stack + " wasn't a bauble item weewoo"); - } - } - - @Override - public ItemStack getStack() { - return stack; - } - - @Override - public Multimap, AttributeModifier> getAttributeModifiers(SlotContext slotContext, ResourceLocation id) { - var map = ICurio.super.getAttributeModifiers(slotContext, id); - map.putAll(this.bauble.getHexBaubleAttrs(this.stack)); - return map; - } - } - - - public static void init() { - DiscoveryHandlers.addExtraEquipmentDiscoverer(player -> { - List result = new ArrayList<>(); - ICuriosItemHandler handler = player.getCapability(CuriosCapability.INVENTORY); - if(handler != null) { - for (var stacksHandler : handler.getCurios().values()) { - var stacks = stacksHandler.getStacks(); - for (int i = 0; i < stacks.getSlots(); i++) { - var stack = stacks.getStackInSlot(i); - if (stack.isEmpty()) continue; - result.add(stack); - } - } - } - return result; - }); - - DiscoveryHandlers.addDebugItemDiscoverer((player, type) -> { - var inv = player.getCapability(CuriosCapability.INVENTORY); - - if(inv != null) { - for (var stacksHandler : inv.getCurios().values()) { - var stacks = stacksHandler.getStacks(); - for (int i = 0; i < stacks.getSlots(); i++) { - var stack = stacks.getStackInSlot(i); - if (ItemCreativeUnlocker.isDebug(stack, type)) { - return stack; - } - } - } - } - return ItemStack.EMPTY; - }); - } - - public static void registerCap(RegisterCapabilitiesEvent evt, Item item) { - evt.registerItem(CuriosCapability.ITEM, (stack, ctx) -> new Wrapper(stack), item); - } - - public static void onClientSetup(final FMLClientSetupEvent event) { - CuriosRenderers.register(); - } -} diff --git a/Neoforge/src/main/java/at/petrak/hexcasting/forge/interop/curios/CuriosRenderers.java b/Neoforge/src/main/java/at/petrak/hexcasting/forge/interop/curios/CuriosRenderers.java deleted file mode 100644 index a7785611ee..0000000000 --- a/Neoforge/src/main/java/at/petrak/hexcasting/forge/interop/curios/CuriosRenderers.java +++ /dev/null @@ -1,27 +0,0 @@ -package at.petrak.hexcasting.forge.interop.curios; - -import at.petrak.hexcasting.common.lib.HexItems; -import net.minecraft.client.Minecraft; -import net.minecraft.client.model.HumanoidModel; -import net.minecraft.client.model.geom.PartPose; -import net.minecraft.client.model.geom.builders.CubeDeformation; -import net.minecraft.client.model.geom.builders.CubeListBuilder; -import net.minecraft.client.model.geom.builders.LayerDefinition; -import net.minecraft.client.model.geom.builders.MeshDefinition; -import net.neoforged.neoforge.client.event.EntityRenderersEvent; -import top.theillusivec4.curios.api.client.CuriosRendererRegistry; - -public class CuriosRenderers { - public static void register() { - CuriosRendererRegistry.register(HexItems.SCRYING_LENS, () -> new LensCurioRenderer(Minecraft.getInstance().getEntityModels().bakeLayer(LensCurioRenderer.LAYER))); - } - - public static void onLayerRegister(final EntityRenderersEvent.RegisterLayerDefinitions event) { - event.registerLayerDefinition(LensCurioRenderer.LAYER, () -> { - CubeListBuilder builder = new CubeListBuilder(); - MeshDefinition mesh = HumanoidModel.createMesh(CubeDeformation.NONE, 0); - mesh.getRoot().addOrReplaceChild("head", builder, PartPose.ZERO); - return LayerDefinition.create(mesh, 1, 1); - }); - } -} diff --git a/Neoforge/src/main/java/at/petrak/hexcasting/forge/interop/curios/LensCurioRenderer.java b/Neoforge/src/main/java/at/petrak/hexcasting/forge/interop/curios/LensCurioRenderer.java deleted file mode 100644 index a9f590d950..0000000000 --- a/Neoforge/src/main/java/at/petrak/hexcasting/forge/interop/curios/LensCurioRenderer.java +++ /dev/null @@ -1,55 +0,0 @@ -package at.petrak.hexcasting.forge.interop.curios; - -import at.petrak.hexcasting.api.HexAPI; -import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Axis; -import net.minecraft.client.Minecraft; -import net.minecraft.client.model.EntityModel; -import net.minecraft.client.model.HumanoidModel; -import net.minecraft.client.model.geom.ModelLayerLocation; -import net.minecraft.client.model.geom.ModelPart; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.entity.RenderLayerParent; -import net.minecraft.client.renderer.texture.OverlayTexture; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.item.ItemDisplayContext; -import net.minecraft.world.item.ItemStack; -import top.theillusivec4.curios.api.SlotContext; -import top.theillusivec4.curios.api.client.ICurioRenderer; - -public class LensCurioRenderer implements ICurioRenderer { - public static final ModelLayerLocation LAYER = new ModelLayerLocation(ResourceLocation.fromNamespaceAndPath(HexAPI.MOD_ID, "lens"), "lens"); - - private final HumanoidModel model; - - public LensCurioRenderer(ModelPart part) { - this.model = new HumanoidModel<>(part); - } - - @Override - public > void render(ItemStack stack, SlotContext slotContext, PoseStack matrixStack, RenderLayerParent renderLayerParent, MultiBufferSource renderTypeBuffer, int light, float limbSwing, float limbSwingAmount, float partialTicks, float ageInTicks, float netHeadYaw, float headPitch) { - // https://github.com/Creators-of-Create/Create/blob/ee33823ed0b5084af10ed131a1626ce71db4c07e/src/main/java/com/simibubi/create/compat/curios/GogglesCurioRenderer.java - - // Prepare values for transformation - model.setupAnim(slotContext.entity(), limbSwing, limbSwingAmount, ageInTicks, netHeadYaw, headPitch); - model.prepareMobModel(slotContext.entity(), limbSwing, limbSwingAmount, partialTicks); - ICurioRenderer.followHeadRotations(slotContext.entity(), model.head); - - // Translate and rotate with our head - matrixStack.pushPose(); - matrixStack.translate(model.head.x / 16.0, model.head.y / 16.0, model.head.z / 16.0); - matrixStack.mulPose(Axis.YP.rotation(model.head.yRot)); - matrixStack.mulPose(Axis.XP.rotation(model.head.xRot)); - - // Translate and scale to our head - matrixStack.translate(0, -0.25, 0); - matrixStack.mulPose(Axis.ZP.rotationDegrees(180.0f)); - matrixStack.scale(0.625f, 0.625f, 0.625f); - - // Render - var instance = Minecraft.getInstance(); - instance.getItemRenderer().renderStatic(stack, ItemDisplayContext.HEAD, light, OverlayTexture.NO_OVERLAY, matrixStack, renderTypeBuffer, instance.level, 0); - matrixStack.popPose(); - } -} diff --git a/Neoforge/src/main/java/at/petrak/hexcasting/forge/xplat/ForgeXplatImpl.java b/Neoforge/src/main/java/at/petrak/hexcasting/forge/xplat/ForgeXplatImpl.java index 5acbe02d87..7b5a1e01e3 100644 --- a/Neoforge/src/main/java/at/petrak/hexcasting/forge/xplat/ForgeXplatImpl.java +++ b/Neoforge/src/main/java/at/petrak/hexcasting/forge/xplat/ForgeXplatImpl.java @@ -27,7 +27,6 @@ import at.petrak.hexcasting.common.recipe.ingredient.state.StateIngredientType; import at.petrak.hexcasting.forge.cap.CapSyncers; import at.petrak.hexcasting.forge.cap.HexCapabilities; -import at.petrak.hexcasting.forge.interop.curios.CuriosApiInterop; import at.petrak.hexcasting.forge.network.MsgBrainsweepAck; import at.petrak.hexcasting.forge.recipe.ForgeUnsealedIngredient; import at.petrak.hexcasting.interop.HexInterop; @@ -121,9 +120,7 @@ public boolean isModPresent(String id) { @Override public void initPlatformSpecific() { - if (this.isModPresent(HexInterop.Forge.CURIOS_API_ID)) { - CuriosApiInterop.init(); - } + // platform-specific initialization not currently necessary } // @Override diff --git a/Neoforge/src/main/resources/META-INF/neoforge.mods.toml b/Neoforge/src/main/resources/META-INF/neoforge.mods.toml index 6b5b68b202..765571e7dd 100644 --- a/Neoforge/src/main/resources/META-INF/neoforge.mods.toml +++ b/Neoforge/src/main/resources/META-INF/neoforge.mods.toml @@ -21,47 +21,43 @@ config = "hexcasting_forge.mixins.json" [[dependencies.hexcasting]] modId = "neoforge" -mandatory = true versionRange = "[21,)" ordering = "NONE" side = "BOTH" [[dependencies.hexcasting]] modId = "minecraft" -mandatory = true versionRange = "[1.21.1,1.21.10)" ordering = "NONE" side = "BOTH" [[dependencies.hexcasting]] modId = "paucal" -mandatory = true versionRange = "[0.7.1,)" ordering = "NONE" side = "BOTH" [[dependencies.hexcasting]] modId = "patchouli" -mandatory = true versionRange = "[1.21-80,)" ordering = "NONE" side = "BOTH" [[dependencies.hexcasting]] modId = "caelus" -mandatory = true versionRange = "[7.0.1+1.21.1,)" ordering = "NONE" side = "BOTH" [[dependencies.hexcasting]] modId = "inline" -mandatory = true versionRange = "[1.21.1-1.2.2,)" ordering = "NONE" side = "BOTH" [[dependencies.hexcasting]] modId = "accessories" -mandatory = false -versionRange = "[1.1.0-beta.16+1.21.1,)" \ No newline at end of file +type = "optional" +versionRange = "[1.1.0-beta.16+1.21.1,)" +ordering = "NONE" +side = "BOTH" \ No newline at end of file diff --git a/Neoforge/src/main/resources/data/curios/tags/item/head.json b/Neoforge/src/main/resources/data/curios/tags/item/head.json deleted file mode 100644 index 9fae8ae720..0000000000 --- a/Neoforge/src/main/resources/data/curios/tags/item/head.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "replace": false, - "values": [ - "hexcasting:lens" - ] -}