Jump to content

[1.16.4] Help with capabilities, crash error


D_Captain

Recommended Posts

I am still trying to get familiar with the forge systems and cannot for the life of me figure out why my .getCapability() is returning null. Granted, it's like 7am and I've not slept so apologies if this is a dumb error. Any help would be appreciated, attached are the logs and relevant code (I think that's everything relevant anyway).

SerializableCapabilityProvider

public class SerializableCapabilityProvider <HANDLER> extends SimpleCapabilityProvider<HANDLER> implements ICapabilitySerializable<INBT> {


    public SerializableCapabilityProvider(final Capability<HANDLER> capability, @Nullable final Direction facing) {
        this(capability, facing, capability.getDefaultInstance());
    }
    
    public SerializableCapabilityProvider(final Capability<HANDLER> capability, @Nullable final Direction facing, @Nullable final HANDLER instance) {
        super(capability, facing, instance);
    }

    @Nullable
    @Override
    public INBT serializeNBT() {
        final HANDLER instance = getInstance();

        if (instance == null) {
            return null;
        }

        return getCapability().writeNBT(instance, getFacing());
    }

    @Override
    public void deserializeNBT(final INBT nbt) {
        final HANDLER instance = getInstance();

        if (instance == null) {
            return;
        }

        getCapability().readNBT(instance, getFacing(), nbt);
    }

}


SimpleCapabilityProvider
 

public class SimpleCapabilityProvider <HANDLER> implements ICapabilityProvider {


    protected final Capability<HANDLER> capability;


    protected final Direction facing;

    protected final HANDLER instance;

    protected final LazyOptional<HANDLER> lazyOptional;

    public SimpleCapabilityProvider(final Capability<HANDLER> capability, @Nullable final Direction facing, @Nullable final HANDLER instance) {
        this.capability = capability;
        this.facing = facing;

        this.instance = instance;

        if (this.instance != null) {
            lazyOptional = LazyOptional.of(() -> this.instance);
        } else {
            lazyOptional = LazyOptional.empty();
        }
    }

    @Override
    public <T> LazyOptional<T> getCapability(final Capability<T> capability, @Nullable final Direction facing) {
        return getCapability().orEmpty(capability, lazyOptional);
    }

    public final Capability<HANDLER> getCapability() {
        return capability;
    }

    @Nullable
    public Direction getFacing() {
        return facing;
    }

    @Nullable
    public final HANDLER getInstance() {
        return instance;
    }
}


My registering method and attaching methods

public class EntityBaseStatsCapability {

    @CapabilityInject(IEntityStats.class)
    public static final Capability<IEntityStats> INSTANCE = null;
    private static final Direction DEFAULT_FACING = null;


    public static void register()
    {
        CapabilityManager.INSTANCE.register(IEntityStats.class, new Capability.IStorage<IEntityStats>()
        {

            @Override
            public INBT writeNBT(Capability<IEntityStats> capability, IEntityStats instance, Direction side)
            {
                CompoundNBT props = new CompoundNBT();
                props.putInt("power", instance.getPower());
                props.putLong("beli", instance.getBeli());
                props.putInt("gold", instance.getGold());
                props.putLong("bounty", instance.getBounty());
                props.putString("race", instance.getRace());
                props.putString("combatClass", instance.getCombatClass());
                props.putString("meleeSpecialization", instance.getMeleeSpecialization());
                props.putString("rangedSpecialization", instance.getRangedSpecialization());
                props.putString("weatherSpecialization", instance.getWeatherSpecialization());
                props.putString("unarmedSpecialization", instance.getUnarmedSpecialization());
                props.putString("doctorSpecialization", instance.getDoctorSpecialization());
                props.putLong("meleeExp", instance.getMeleeExp());
                props.putLong("rangedExp", instance.getRangedExp());
                props.putLong("weatherExp", instance.getWeatherExp());
                props.putLong("unarmedExp", instance.getUnarmedExp());
                props.putLong("doctorExp", instance.getDoctorExp());
                props.putInt("meleePoints", instance.getMeleePoints());
                props.putInt("rangedPoints", instance.getRangedPoints());
                props.putInt("weatherPoints", instance.getWeatherPoints());
                props.putInt("unarmedPoints", instance.getUnarmedPoints());
                props.putInt("doctorPoints", instance.getDoctorPoints());
                props.putString("faction", instance.getFaction());
                props.putString("factionRank", instance.getFactionRank());
                props.putLong("rankExp", instance.getRankExp());
                return props;
            }

            @Override
            public void readNBT(Capability<IEntityStats> capability, IEntityStats instance, Direction side, INBT nbt)
            {
                CompoundNBT props = (CompoundNBT) nbt;
                instance.setPower(props.getInt("power"));
                instance.setBeli(props.getLong("beli"));
                instance.setGold(props.getInt("gold"));
                instance.setBounty(props.getLong("bounty"));
                instance.setRace(props.getString("race"));
                instance.setCombatClass(props.getString("combatClass"));
                instance.setMeleeSpecialization(props.getString("meleeSpecialization"));
                instance.setRangedSpecialization(props.getString("rangedSpecialization"));
                instance.setWeatherSpecialization(props.getString("weatherSpecialization"));
                instance.setUnarmedSpecialization(props.getString("unarmedSpecialization"));
                instance.setDoctorSpecialization(props.getString("doctorSpecialization"));
                instance.setMeleeExp(props.getLong("meleeExp"));
                instance.setRangedExp(props.getLong("rangedExp"));
                instance.setWeatherExp(props.getLong("weatherExp"));
                instance.setUnarmedExp(props.getLong("unarmedExp"));
                instance.setDoctorExp(props.getLong("doctorExp"));
                instance.setMeleePoints(props.getInt("meleePoints"));
                instance.setRangedPoints(props.getInt("rangedPoints"));
                instance.setWeatherPoints(props.getInt("weatherPoints"));
                instance.setUnarmedPoints(props.getInt("unarmedPoints"));
                instance.setDoctorPoints(props.getInt("doctorPoints"));
                instance.setFaction(props.getString("faction"));
                instance.setFactionRank(props.getString("factionRank"));
                instance.setRankExp(props.getLong("rankExp"));
            }
        }, () -> new EntityBaseStats(null));

    }

    public static ICapabilityProvider createProvider(final IEntityStats entityStats) {
        return new SerializableCapabilityProvider<>(INSTANCE, DEFAULT_FACING, entityStats);
    }

    public static LazyOptional<IEntityStats> getEntityStats(final LivingEntity entity)
    {
        return entity.getCapability(INSTANCE, DEFAULT_FACING);
    }

    @Mod.EventBusSubscriber(modid = APIConfig.PROJECT_ID)
    private static class EventHandler {
        @SubscribeEvent
        public static void attachCapabilities(AttachCapabilitiesEvent<Entity> event) {
            if (event.getObject() == null)
                return;

            if (event.getObject() instanceof LivingEntity) {
                final EntityBaseStats entityStats = new EntityBaseStats((LivingEntity) event.getObject());
                event.addCapability(new ResourceLocation(APIConfig.PROJECT_ID), createProvider(entityStats));
            }
        }
    }
}

 

Crash Report

[06:40:42] [Worker-Main-15/INFO] [STDOUT/]: [net.minecraft.util.registry.Bootstrap:printToSYSOUT:130]: ---- Minecraft Crash Report ----
// I let you down. Sorry :(

Time: 15/12/20 6:40 AM
Description: Saving entity NBT

java.lang.NullPointerException: Saving entity NBT
	at taeda.OPRL.data.SerializableCapabilityProvider.serializeNBT(SerializableCapabilityProvider.java:31) ~[?:?] {re:classloading}
	at net.minecraftforge.common.capabilities.CapabilityDispatcher.serializeNBT(CapabilityDispatcher.java:127) ~[forge:?] {re:classloading}
	at net.minecraftforge.common.capabilities.CapabilityProvider.serializeCaps(CapabilityProvider.java:86) ~[forge:?] {re:classloading}
	at net.minecraft.entity.Entity.writeWithoutTypeId(Entity.java:1567) ~[forge:?] {re:classloading,pl:accesstransformer:B}
	at net.minecraft.entity.Entity.writeUnlessRemoved(Entity.java:1493) ~[forge:?] {re:classloading,pl:accesstransformer:B}
	at net.minecraft.entity.Entity.writeUnlessPassenger(Entity.java:1509) ~[forge:?] {re:classloading,pl:accesstransformer:B}
	at net.minecraft.world.chunk.ChunkPrimer.addEntity(ChunkPrimer.java:219) ~[forge:?] {re:classloading}
	at net.minecraft.world.gen.WorldGenRegion.addEntity(WorldGenRegion.java:260) ~[forge:?] {re:classloading}
	at java.util.stream.Streams$StreamBuilderImpl.forEachRemaining(Streams.java:419) ~[?:1.8.0_271] {}
	at java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:742) ~[?:1.8.0_271] {}
	at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:580) ~[?:1.8.0_271] {}
	at net.minecraft.world.IServerWorld.func_242417_l(IServerWorld.java:10) ~[forge:?] {re:classloading}
	at net.minecraft.world.spawner.WorldEntitySpawner.performWorldGenSpawning(WorldEntitySpawner.java:372) ~[forge:?] {re:classloading}
	at net.minecraft.world.gen.NoiseChunkGenerator.func_230354_a_(NoiseChunkGenerator.java:626) ~[forge:?] {re:classloading}
	at net.minecraft.world.chunk.ChunkStatus.lambda$static$12(ChunkStatus.java:89) ~[forge:?] {re:classloading,pl:accesstransformer:B}
	at net.minecraft.world.chunk.ChunkStatus$ISelectiveWorker.doWork(ChunkStatus.java:244) ~[forge:?] {re:classloading}
	at net.minecraft.world.chunk.ChunkStatus.doGenerationWork(ChunkStatus.java:198) ~[forge:?] {re:classloading,pl:accesstransformer:B}
	at net.minecraft.world.server.ChunkManager.lambda$chunkGenerate$18(ChunkManager.java:541) ~[forge:?] {re:classloading}
	at com.mojang.datafixers.util.Either$Left.map(Either.java:38) ~[datafixerupper-4.0.26.jar:?] {re:classloading,re:classloading,re:classloading,re:classloading,re:classloading,re:classloading,re:classloading}
	at net.minecraft.world.server.ChunkManager.lambda$chunkGenerate$20(ChunkManager.java:539) ~[forge:?] {re:classloading}
	at java.util.concurrent.CompletableFuture.uniCompose(CompletableFuture.java:966) ~[?:1.8.0_271] {}
	at java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:940) ~[?:1.8.0_271] {}
	at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:456) ~[?:1.8.0_271] {}
	at net.minecraft.world.chunk.ChunkTaskPriorityQueueSorter.lambda$func_219069_a$1(ChunkTaskPriorityQueueSorter.java:44) ~[forge:?] {re:classloading}
	at net.minecraft.util.concurrent.DelegatedTaskExecutor.driveOne(DelegatedTaskExecutor.java:88) ~[forge:?] {re:classloading}
	at net.minecraft.util.concurrent.DelegatedTaskExecutor.driveWhile(DelegatedTaskExecutor.java:132) ~[forge:?] {re:classloading}
	at net.minecraft.util.concurrent.DelegatedTaskExecutor.run(DelegatedTaskExecutor.java:100) ~[forge:?] {re:classloading}
	at java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1402) ~[?:1.8.0_271] {}
	at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289) ~[?:1.8.0_271] {}
	at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1067) ~[?:1.8.0_271] {}
	at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1703) ~[?:1.8.0_271] {}
	at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:172) ~[?:1.8.0_271] {}


A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------

-- Head --
Thread: Worker-Main-15
Stacktrace:
	at taeda.OPRL.data.SerializableCapabilityProvider.serializeNBT(SerializableCapabilityProvider.java:31) ~[?:?] {re:classloading}
	at net.minecraftforge.common.capabilities.CapabilityDispatcher.serializeNBT(CapabilityDispatcher.java:127) ~[forge:?] {re:classloading}
	at net.minecraftforge.common.capabilities.CapabilityProvider.serializeCaps(CapabilityProvider.java:86) ~[forge:?] {re:classloading}
-- Entity being saved --
Details:
	Entity Type: minecraft:sheep (net.minecraft.entity.passive.SheepEntity)
	Entity ID: 1
	Entity Name: Sheep
	Entity's Exact location: -118.00, 70.00, 198.00
	Entity's Block location: World: (-118,70,198), Chunk: (at 10,4,6 in -8,12; contains blocks -128,0,192 to -113,255,207), Region: (-1,0; contains chunks -32,0 to -1,31, blocks -512,0,0 to -1,255,511)
	Entity's Momentum: 0.00, 0.00, 0.00
	Entity's Passengers: []
	Entity's Vehicle: ~~ERROR~~ NullPointerException: null
Stacktrace:
	at net.minecraft.entity.Entity.writeWithoutTypeId(Entity.java:1567) ~[forge:?] {re:classloading,pl:accesstransformer:B}
	at net.minecraft.entity.Entity.writeUnlessRemoved(Entity.java:1493) ~[forge:?] {re:classloading,pl:accesstransformer:B}
	at net.minecraft.entity.Entity.writeUnlessPassenger(Entity.java:1509) ~[forge:?] {re:classloading,pl:accesstransformer:B}
	at net.minecraft.world.chunk.ChunkPrimer.addEntity(ChunkPrimer.java:219) ~[forge:?] {re:classloading}
	at net.minecraft.world.gen.WorldGenRegion.addEntity(WorldGenRegion.java:260) ~[forge:?] {re:classloading}
	at java.util.stream.Streams$StreamBuilderImpl.forEachRemaining(Streams.java:419) ~[?:1.8.0_271] {}
	at java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:742) ~[?:1.8.0_271] {}
	at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:580) ~[?:1.8.0_271] {}
	at net.minecraft.world.IServerWorld.func_242417_l(IServerWorld.java:10) ~[forge:?] {re:classloading}
	at net.minecraft.world.spawner.WorldEntitySpawner.performWorldGenSpawning(WorldEntitySpawner.java:372) ~[forge:?] {re:classloading}
	at net.minecraft.world.gen.NoiseChunkGenerator.func_230354_a_(NoiseChunkGenerator.java:626) ~[forge:?] {re:classloading}
	at net.minecraft.world.chunk.ChunkStatus.lambda$static$12(ChunkStatus.java:89) ~[forge:?] {re:classloading,pl:accesstransformer:B}
	at net.minecraft.world.chunk.ChunkStatus$ISelectiveWorker.doWork(ChunkStatus.java:244) ~[forge:?] {re:classloading}
	at net.minecraft.world.chunk.ChunkStatus.doGenerationWork(ChunkStatus.java:198) ~[forge:?] {re:classloading,pl:accesstransformer:B}


-- Chunk to be generated --
Details:
	Location: -8,12
	Position hash: 55834574840
	Generator: net.minecraft.world.gen.NoiseChunkGenerator@6fd409b
Stacktrace:
	at net.minecraft.world.server.ChunkManager.lambda$chunkGenerate$18(ChunkManager.java:541) ~[forge:?] {re:classloading}
	at com.mojang.datafixers.util.Either$Left.map(Either.java:38) ~[datafixerupper-4.0.26.jar:?] {re:classloading,re:classloading,re:classloading,re:classloading,re:classloading,re:classloading,re:classloading,re:classloading,re:classloading}
	at net.minecraft.world.server.ChunkManager.lambda$chunkGenerate$20(ChunkManager.java:539) ~[forge:?] {re:classloading}
	at java.util.concurrent.CompletableFuture.uniCompose(CompletableFuture.java:966) ~[?:1.8.0_271] {}
	at java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:940) ~[?:1.8.0_271] {}
	at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:456) ~[?:1.8.0_271] {}
	at net.minecraft.world.chunk.ChunkTaskPriorityQueueSorter.lambda$func_219069_a$1(ChunkTaskPriorityQueueSorter.java:44) ~[forge:?] {re:classloading}
	at net.minecraft.util.concurrent.DelegatedTaskExecutor.driveOne(DelegatedTaskExecutor.java:88) ~[forge:?] {re:classloading}
	at net.minecraft.util.concurrent.DelegatedTaskExecutor.driveWhile(DelegatedTaskExecutor.java:132) ~[forge:?] {re:classloading}
	at net.minecraft.util.concurrent.DelegatedTaskExecutor.run(DelegatedTaskExecutor.java:100) ~[forge:?] {re:classloading}
	at java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1402) ~[?:1.8.0_271] {}
	at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289) ~[?:1.8.0_271] {}
	at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1067) ~[?:1.8.0_271] {}
	at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1703) ~[?:1.8.0_271] {}
	at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:172) ~[?:1.8.0_271] {}


-- System Details --
Details:
	Minecraft Version: 1.16.4
	Minecraft Version ID: 1.16.4
	Operating System: Windows 10 (amd64) version 10.0
	Java Version: 1.8.0_271, Oracle Corporation
	Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
	Memory: 1267210720 bytes (1208 MB) / 1971847168 bytes (1880 MB) up to 3817865216 bytes (3641 MB)
	CPUs: 16
	JVM Flags: 2 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump -Xmx4096m
	ModLauncher: 8.0.6+85+master.325de55
	ModLauncher launch target: fmluserdevclient
	ModLauncher naming: mcp
	ModLauncher services: 
		/mixin-0.8.2.jar mixin PLUGINSERVICE 
		/eventbus-3.0.5-service.jar eventbus PLUGINSERVICE 
		/forge-1.16.4-35.1.0_mapped_snapshot_20201028-1.16.3-launcher.jar object_holder_definalize PLUGINSERVICE 
		/forge-1.16.4-35.1.0_mapped_snapshot_20201028-1.16.3-launcher.jar runtime_enum_extender PLUGINSERVICE 
		/accesstransformers-2.2.0-shadowed.jar accesstransformer PLUGINSERVICE 
		/forge-1.16.4-35.1.0_mapped_snapshot_20201028-1.16.3-launcher.jar capability_inject_definalize PLUGINSERVICE 
		/forge-1.16.4-35.1.0_mapped_snapshot_20201028-1.16.3-launcher.jar runtimedistcleaner PLUGINSERVICE 
		/mixin-0.8.2.jar mixin TRANSFORMATIONSERVICE 
		/forge-1.16.4-35.1.0_mapped_snapshot_20201028-1.16.3-launcher.jar fml TRANSFORMATIONSERVICE 
	FML: 35.1
	Forge: net.minecraftforge:35.1.0
	FML Language Providers: 
		[email protected]
		minecraft@1
	Mod List: 
		client-extra.jar                                  |Minecraft                     |minecraft                     |1.16.4              |DONE      |a1:d4:5e:04:4f:d3:d6:e0:7b:37:97:cf:77:b0:de:ad:4a:47:ce:8c:96:49:5f:0a:cf:8c:ae:b2:6d:4b:8a:3f
		forge-1.16.4-35.1.0_mapped_snapshot_20201028-1.16.|Forge                         |forge                         |35.1.0              |DONE      |NOSIGNATURE
		main                                              |One Piece: Roger's Legacy     |oprl                          |0.0.01              |DONE      |NOSIGNATURE
	Crash Report UUID: f079221a-fc3d-457c-8053-600a7be078eb
[06:40:42] [Server thread/FATAL] [minecraft/ThreadTaskExecutor]: Error executing task on Chunk source main thread executor for minecraft:overworld
java.util.concurrent.CompletionException: net.minecraft.crash.ReportedException: Saving entity NBT
	at java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:273) ~[?:1.8.0_271] {}
	at java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:280) ~[?:1.8.0_271] {}
	at java.util.concurrent.CompletableFuture.uniCompose(CompletableFuture.java:975) ~[?:1.8.0_271] {}
	at java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:940) ~[?:1.8.0_271] {}
	at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:456) ~[?:1.8.0_271] {}
	at net.minecraft.world.chunk.ChunkTaskPriorityQueueSorter.lambda$func_219069_a$1(ChunkTaskPriorityQueueSorter.java:44) ~[forge:?] {re:classloading}
	at net.minecraft.util.concurrent.DelegatedTaskExecutor.driveOne(DelegatedTaskExecutor.java:88) ~[forge:?] {re:classloading}
	at net.minecraft.util.concurrent.DelegatedTaskExecutor.driveWhile(DelegatedTaskExecutor.java:132) ~[forge:?] {re:classloading}
	at net.minecraft.util.concurrent.DelegatedTaskExecutor.run(DelegatedTaskExecutor.java:100) ~[forge:?] {re:classloading}
	at java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1402) ~[?:1.8.0_271] {}
	at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289) ~[?:1.8.0_271] {}
	at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1067) ~[?:1.8.0_271] {}
	at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1703) ~[?:1.8.0_271] {}
	at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:172) ~[?:1.8.0_271] {}
Caused by: net.minecraft.crash.ReportedException: Saving entity NBT
	at net.minecraft.world.server.ChunkManager.lambda$chunkGenerate$18(ChunkManager.java:552) ~[forge:?] {re:classloading}
	at com.mojang.datafixers.util.Either$Left.map(Either.java:38) ~[datafixerupper-4.0.26.jar:?] {re:classloading,re:classloading,re:classloading,re:classloading,re:classloading,re:classloading,re:classloading,re:classloading,re:classloading,re:classloading}
	at net.minecraft.world.server.ChunkManager.lambda$chunkGenerate$20(ChunkManager.java:539) ~[forge:?] {re:classloading}
	at java.util.concurrent.CompletableFuture.uniCompose(CompletableFuture.java:966) ~[?:1.8.0_271] {}
	... 11 more
Caused by: java.lang.NullPointerException
	at taeda.OPRL.data.SerializableCapabilityProvider.serializeNBT(SerializableCapabilityProvider.java:31) ~[?:?] {re:classloading}
	at net.minecraftforge.common.capabilities.CapabilityDispatcher.serializeNBT(CapabilityDispatcher.java:127) ~[forge:?] {re:classloading}
	at net.minecraftforge.common.capabilities.CapabilityProvider.serializeCaps(CapabilityProvider.java:86) ~[forge:?] {re:classloading}
	at net.minecraft.entity.Entity.writeWithoutTypeId(Entity.java:1567) ~[forge:?] {re:classloading,pl:accesstransformer:B}
	at net.minecraft.entity.Entity.writeUnlessRemoved(Entity.java:1493) ~[forge:?] {re:classloading,pl:accesstransformer:B}
	at net.minecraft.entity.Entity.writeUnlessPassenger(Entity.java:1509) ~[forge:?] {re:classloading,pl:accesstransformer:B}
	at net.minecraft.world.chunk.ChunkPrimer.addEntity(ChunkPrimer.java:219) ~[forge:?] {re:classloading}
	at net.minecraft.world.gen.WorldGenRegion.addEntity(WorldGenRegion.java:260) ~[forge:?] {re:classloading}
	at java.util.stream.Streams$StreamBuilderImpl.forEachRemaining(Streams.java:419) ~[?:1.8.0_271] {}
	at java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:742) ~[?:1.8.0_271] {}
	at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:580) ~[?:1.8.0_271] {}
	at net.minecraft.world.IServerWorld.func_242417_l(IServerWorld.java:10) ~[forge:?] {re:classloading}
	at net.minecraft.world.spawner.WorldEntitySpawner.performWorldGenSpawning(WorldEntitySpawner.java:372) ~[forge:?] {re:classloading}
	at net.minecraft.world.gen.NoiseChunkGenerator.func_230354_a_(NoiseChunkGenerator.java:626) ~[forge:?] {re:classloading}
	at net.minecraft.world.chunk.ChunkStatus.lambda$static$12(ChunkStatus.java:89) ~[forge:?] {re:classloading,pl:accesstransformer:B}
	at net.minecraft.world.chunk.ChunkStatus$ISelectiveWorker.doWork(ChunkStatus.java:244) ~[forge:?] {re:classloading}
	at net.minecraft.world.chunk.ChunkStatus.doGenerationWork(ChunkStatus.java:198) ~[forge:?] {re:classloading,pl:accesstransformer:B}
	at net.minecraft.world.server.ChunkManager.lambda$chunkGenerate$18(ChunkManager.java:541) ~[forge:?] {re:classloading}
	at com.mojang.datafixers.util.Either$Left.map(Either.java:38) ~[datafixerupper-4.0.26.jar:?] {re:classloading,re:classloading,re:classloading,re:classloading,re:classloading,re:classloading,re:classloading,re:classloading,re:classloading,re:classloading}
	at net.minecraft.world.server.ChunkManager.lambda$chunkGenerate$20(ChunkManager.java:539) ~[forge:?] {re:classloading}
	at java.util.concurrent.CompletableFuture.uniCompose(CompletableFuture.java:966) ~[?:1.8.0_271] {}
	... 11 more

Exception: java.util.ConcurrentModificationException thrown from the UncaughtExceptionHandler in thread "Worker-Main-20"

Exception: java.util.ConcurrentModificationException thrown from the UncaughtExceptionHandler in thread "Worker-Main-62"

Exception: java.util.ConcurrentModificationException thrown from the UncaughtExceptionHandler in thread "Worker-Main-153"

Process finished with exit code -1

 

Link to comment
Share on other sites

23 minutes ago, diesieben07 said:

Where do you call EntityBaseStatsCapability.register?

public class OPRLMain
{

    private static final Logger LOGGER = LogManager.getLogger();

    public OPRLMain() {

        FMLJavaModLoadingContext.get().getModEventBus().addListener(this::setup);
        FMLJavaModLoadingContext.get().getModEventBus().addListener(this::enqueueIMC);
        FMLJavaModLoadingContext.get().getModEventBus().addListener(this::processIMC);
        FMLJavaModLoadingContext.get().getModEventBus().addListener(this::doClientStuff);
        MinecraftForge.EVENT_BUS.register(new OPRLKeybindings());
        MinecraftForge.EVENT_BUS.register(new EntityBaseStatsCapability());
    }

    private void setup(final FMLCommonSetupEvent event)
    {
        OPRLKeybindings.init();
        OPRLCapabilities.init();
        LOGGER.info("HELLO FROM PREINIT");
    }

    private void doClientStuff(final FMLClientSetupEvent event) {
        // do something that can only be done on the client

    }

    private void enqueueIMC(final InterModEnqueueEvent event)
    {
        // some example code to dispatch IMC to another mod
    }

    private void processIMC(final InterModProcessEvent event)
    {
        // some example code to receive and process InterModComms from other mods
    }
    // You can use SubscribeEvent and let the Event Bus discover methods to call

    @SubscribeEvent
    public void onServerStarting(FMLServerStartingEvent event) {
        // do something when the server starts
    }

    // You can use EventBusSubscriber to automatically subscribe events on the contained class (this is subscribing to the MOD
    // Event bus for receiving Registry Events)
    @Mod.EventBusSubscriber(bus=Mod.EventBusSubscriber.Bus.MOD)
    public static class RegistryEvents {
        @SubscribeEvent
        public static void onBlocksRegistry(final RegistryEvent.Register<Block> blockRegistryEvent) {
            // register a new block here
            LOGGER.info("HELLO from Register Block");
        }
    }
@Mod.EventBusSubscriber(modid = APIConfig.PROJECT_ID)
public class OPRLCapabilities {

    public static void init(){

        EntityBaseStatsCapability.register();
    }


}


Here you go, good sir

Edited by D_Captain
Link to comment
Share on other sites

2 minutes ago, diesieben07 said:

getEntityStats returns LazyOptional<IEntityStats>, which will never be an instance of IEntityStats.

Okay recloning the repo worked and its not crashing, strange. Anyway, this might be a dumb question but would there be anything wrong with making getEntityStats return IEntityStats?

Link to comment
Share on other sites

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.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • Selamat datang di OLXTOTO, situs slot gacor terpanas yang sedang booming di industri perjudian online. Jika Anda mencari pengalaman bermain yang luar biasa, maka OLXTOTO adalah tempat yang tepat untuk Anda. Dapatkan sensasi tidak biasa dengan variasi slot online terlengkap dan peluang memenangkan jackpot slot maxwin yang sering. Di sini, Anda akan merasakan keseruan yang luar biasa dalam bermain judi slot. DAFTAR OLXTOTO DISINI LOGIN OLXTOTO DISINI AKUN PRO OLXTOTO DISINI   Slot Gacor untuk Sensasi Bermain Maksimal Olahraga cepat dan seru dengan slot gacor di OLXTOTO. Rasakan sensasi bermain maksimal dengan mesin slot yang memberikan kemenangan beruntun. Temukan keberuntungan Anda di antara berbagai pilihan slot gacor yang tersedia dan rasakan kegembiraan bermain judi slot yang tak terlupakan. Situs Slot Terpercaya dengan Pilihan Terlengkap OLXTOTO adalah situs slot terpercaya yang menawarkan pilihan terlengkap dalam perjudian online. Nikmati berbagai genre dan tema slot online yang menarik, dari slot klasik hingga slot video yang inovatif. Dipercaya oleh jutaan pemain, OLXTOTO memberikan pengalaman bermain yang aman dan terjamin.   Jackpot Slot Maxwin Sering Untuk Peluang Besar Di OLXTOTO, kami tidak hanya memberikan hadiah slot biasa, tapi juga memberikan kesempatan kepada pemain untuk memenangkan jackpot slot maxwin yang sering. Dengan demikian, Anda dapat meraih keberuntungan besar dan memenangkan ribuan rupiah sebagai hadiah jackpot slot maxwin kami. Jackpot slot maxwin merupakan peluang besar bagi para pemain judi slot untuk meraih keuntungan yang lebih besar. Dalam permainan kami, Anda tidak harus terpaku pada kemenangan biasa saja. Kami hadir dengan jackpot slot maxwin yang sering, sehingga Anda memiliki peluang yang lebih besar untuk meraih kemenangan besar dengan hadiah yang menggiurkan. Dalam permainan judi slot, pengalaman bermain bukan hanya tentang keseruan dan hiburan semata. Kami memahami bahwa para pemain juga menginginkan kesempatan untuk meraih keberuntungan besar. Oleh karena itu, OLXTOTO hadir dengan jackpot slot maxwin yang sering untuk memberikan peluang besar kepada para pemain kami. Peluang Besar Menang Jackpot Slot Maxwin Peluang menang jackpot slot maxwin di OLXTOTO sangatlah besar. Anda tidak perlu khawatir tentang batasan atau pembatasan dalam meraih jackpot tersebut. Kami ingin memberikan kesempatan kepada semua pemain kami untuk merasakan sensasi menang dalam jumlah yang luar biasa. Jackpot slot maxwin kami dibuka untuk semua pemain judi slot di OLXTOTO. Anda memiliki peluang yang sama dengan pemain lainnya untuk memenangkan hadiah jackpot yang besar. Kami percaya bahwa semua orang memiliki kesempatan untuk meraih keberuntungan besar, dan itulah mengapa kami menyediakan jackpot slot maxwin yang sering untuk memenuhi harapan dan keinginan Anda.  
    • LOGIN DAN DAFTAR DISINI SEKARANG !!!! Blacktogel adalah situs judi slot online yang menjadi pilihan banyak penggemar judi slot gacor di Indonesia. Dengan platform yang sangat user-friendly dan berbagai macam permainan slot yang tersedia, Blacktogel menjadi tempat yang tepat untuk penggemar judi slot online. Dalam artikel ini, kami akan membahas tentang Blacktogel dan keunggulan situs slot gacor online yang disediakan.  
    • Situs bandar slot online Gacor dengan bonus terbesar saat ini sedang menjadi sorotan para pemain judi online. Dengan persaingan yang semakin ketat dalam industri perjudian online, pemain mencari situs yang tidak hanya menawarkan permainan slot yang gacor (sering memberikan kemenangan), tetapi juga bonus terbesar yang bisa meningkatkan peluang menang. Daftar disini : https://gesit.io/googlegopek
    • Situs bandar slot online Gacor dengan bonus terbesar saat ini sedang menjadi sorotan para pemain judi online. Dengan persaingan yang semakin ketat dalam industri perjudian online, pemain mencari situs yang tidak hanya menawarkan permainan slot yang gacor (sering memberikan kemenangan), tetapi juga bonus terbesar yang bisa meningkatkan peluang menang. Daftar disini : https://gesit.io/googlegopek
    • Situs bandar slot online Gacor dengan bonus terbesar saat ini sedang menjadi sorotan para pemain judi online. Dengan persaingan yang semakin ketat dalam industri perjudian online, pemain mencari situs yang tidak hanya menawarkan permainan slot yang gacor (sering memberikan kemenangan), tetapi juga bonus terbesar yang bisa meningkatkan peluang menang. Daftar disini : https://gesit.io/googlegopek
  • Topics

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.