Posted June 10, 20214 yr First of all, I am unable to subscribe to AttachCapabilitiesEvent. In theory, it should be as simple as follows: @Mod.EventBusSubscriber public class CapabilityEvents { @SubscribeEvent public void playerCapability(final AttachCapabilitiesEvent<Entity> event){ Soul.LOGGER.info("attach capabilities"); if (event.getObject() instanceof PlayerEntity) { event.addCapability(new ResourceLocation("soul", "soul"), new SoulProvider()); } } } , but it does not get called. Secondly, I cant really understand what CapabilityProvider is, where it is used and what I should return in method implementation. From different sources in the internet Ive made the following class: public class SoulProvider implements ICapabilityProvider { @CapabilityInject(ISoul.class) public static Capability<ISoul> SOUL_CAP = null; private LazyOptional<ISoul> instance = LazyOptional.of(() -> new DefaultSoul()); @Nonnull @Override public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap, @Nullable Direction side) { return cap == SOUL_CAP ? instance.cast() : LazyOptional.empty(); } @Nonnull @Override public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap) { return cap == SOUL_CAP ? instance.cast() : LazyOptional.empty(); } } , but it looks like a total nonsense. Forge documentation is a cruel joke and doesnt contain any useful info/examples... Edited June 11, 20214 yr by GrigLog SOUL_CAP::getDefaultInstance was not working, you have to specify the default implementation here
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.