Everything posted by LK1905
-
[Solved][1.16.4] How do I correctly sync capability data between Client and server?
https://github.com/LK1905/GielinorCraft
-
[Solved][1.16.4] How do I correctly sync capability data between Client and server?
But as far as I know, my packet and event handler are already supposed to sync it. Which is why I made this thread, to ask why they aren't.
-
[Solved][1.16.4] How do I correctly sync capability data between Client and server?
My GUI doesn't update the xp values. This is how I reference the player in my GUI: private PlayerEntity player = Minecraft.getInstance().player; private LazyOptional<ISkills> cap = player.getCapability(SkillCapability.SKILL_CAP); private ISkills skills = cap.orElse(null); Do I need to reference the Server Player instead? If so, how? Or Is the client player already supposed to know my server player data from my events/packets? If so, why aren't they working? They're in the OP.
-
[Solved][1.16.4] How do I correctly sync capability data between Client and server?
I changed that part to this: PlayerEntity player = (PlayerEntity) event.getSource().getTrueSource(); LazyOptional<ISkills> cap = player.getCapability(SkillCapability.SKILL_CAP); ISkills skills = cap.orElse(null); But now I can't gain xp at all. Is that the correct way of doing it?
-
[Solved][1.16.4] How do I correctly sync capability data between Client and server?
I added it into the AddXP method like this: if(entity instanceof PlayerEntity) { sync((ServerPlayerEntity) entity); } That didn't make any difference. Is that what you meant?
-
[Solved][1.16.4] How do I correctly sync capability data between Client and server?
This is probably a stupid question, but how would I do that? I tried adding it to SkillStorage the same way I have the getXP, getLevel and getStaticLevel methods, but that made no difference. Is that what you meant, or something different?
-
[Solved][1.16.4] How do I correctly sync capability data between Client and server?
I don't think there's anything wrong with the SkillStorage, as I can gain xp just fine, in the correct skills, the data is just reset to zero when i close and reopen the world. I also have the "Hitpoints" skill set to level 10 and 1154 xp by default. If I comment out my PlayerLoggedInEvent, the skill is correctly set to those values in game, and is reset to those values when I leave the world. But with the event enabled, both the level and xp values are set to 1 and 0.
-
[Solved][1.16.4] How do I correctly sync capability data between Client and server?
Hi, I'm having problems syncing my mod's capability data. There's no errors/crashes or anything, but my code doesn't appear to be doing anything, as reloading the world resets all data values to zero. so I was wondering if someone could look at my code to see if I'm doing anything wrong, or am missing anything. My event handler: package lk1905.gielinorcraft; import lk1905.gielinorcraft.api.skill.ISkills; import lk1905.gielinorcraft.capability.skill.SkillCapability; import net.minecraft.entity.player.ServerPlayerEntity; import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.event.entity.player.PlayerEvent; import net.minecraftforge.event.entity.player.PlayerEvent.PlayerChangedDimensionEvent; import net.minecraftforge.event.entity.player.PlayerEvent.PlayerLoggedInEvent; import net.minecraftforge.event.entity.player.PlayerEvent.PlayerRespawnEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; @Mod.EventBusSubscriber(modid = Gielinorcraft.MODID, bus = Mod.EventBusSubscriber.Bus.FORGE) public class EventHandler { @SubscribeEvent public static void onPlayerClone(PlayerEvent.Clone event) { LazyOptional<ISkills> oldCap = event.getOriginal().getCapability(SkillCapability.SKILL_CAP, null); LazyOptional<ISkills> newCap = event.getPlayer().getCapability(SkillCapability.SKILL_CAP, null); ISkills oldSkills = oldCap.orElse(null); if(oldSkills != null) { ISkills newSkills = newCap.orElse(null); if(newSkills != null) { for(int i = 0; i < 26; i++) { newSkills.setXp(i, oldSkills.getXp(i)); newSkills.setStaticLevel(i, oldSkills.getStaticLevel(i)); newSkills.setLevel(i, oldSkills.getLevel(i)); } } } } @SubscribeEvent public static void onPlayerChangedDimensionEvent(PlayerChangedDimensionEvent event) { ServerPlayerEntity player = (ServerPlayerEntity) event.getPlayer(); if(!player.world.isRemote) { player.getCapability(SkillCapability.SKILL_CAP).ifPresent(c -> c.sync(player)); } } @SubscribeEvent public static void onRespawnEvent(PlayerRespawnEvent event) { if(!event.getPlayer().world.isRemote) { event.getPlayer().getCapability(SkillCapability.SKILL_CAP).ifPresent(c -> c.sync((ServerPlayerEntity) event.getPlayer())); } } @SubscribeEvent public static void onPlayerConnect(PlayerLoggedInEvent event) { ServerPlayerEntity player = (ServerPlayerEntity) event.getPlayer(); if(!player.world.isRemote) { player.getCapability(SkillCapability.SKILL_CAP).ifPresent(c -> c.sync(player)); } } } My packet handler: package lk1905.gielinorcraft.network; import java.util.List; import net.minecraft.entity.player.ServerPlayerEntity; import net.minecraft.server.MinecraftServer; import net.minecraft.util.ResourceLocation; import net.minecraftforge.common.util.FakePlayer; import net.minecraftforge.fml.network.NetworkDirection; import net.minecraftforge.fml.network.NetworkRegistry; import net.minecraftforge.fml.network.simple.SimpleChannel; public class PacketHandler { private static final String PROTOCOL_VERSION = Integer.toString(1); private static final SimpleChannel HANDLER = NetworkRegistry.ChannelBuilder .named(new ResourceLocation("gielinorcraft", "main_channel")) .clientAcceptedVersions(PROTOCOL_VERSION::equals) .serverAcceptedVersions(PROTOCOL_VERSION::equals) .networkProtocolVersion(() -> PROTOCOL_VERSION) .simpleChannel(); public static void register() { int disc = 0; HANDLER.registerMessage(disc++, SkillsPacket.class, SkillsPacket::encode, SkillsPacket::decode, SkillsPacket.Handler::handle); } /** * Sends a packet to a specific player.<br> * Must be called server side. * */ public static void sendTo(Object msg, ServerPlayerEntity player) { if(!(player instanceof FakePlayer)) { HANDLER.sendTo(msg, player.connection.netManager, NetworkDirection.PLAY_TO_CLIENT); } } /** * Sends a packet to the server.<br> * Must be called client side. * */ public static void sendToServer(Object msg) { HANDLER.sendToServer(msg); } /**Server side.*/ public static void sendToAllPlayers(Object msg, MinecraftServer server) { List<ServerPlayerEntity> list = server.getPlayerList().getPlayers(); for(ServerPlayerEntity e : list) { sendTo(msg, e); } } } The packet class for my capability: package lk1905.gielinorcraft.network; import java.util.function.Supplier; import lk1905.gielinorcraft.capability.skill.SkillCapability; import net.minecraft.client.Minecraft; import net.minecraft.nbt.CompoundNBT; import net.minecraft.network.PacketBuffer; import net.minecraftforge.fml.network.NetworkEvent; public class SkillsPacket { private final CompoundNBT nbt; public SkillsPacket(CompoundNBT nbt) { this.nbt = nbt; } public static void encode(SkillsPacket msg, PacketBuffer buf) { buf.writeCompoundTag(msg.nbt); } public static SkillsPacket decode(PacketBuffer buf) { return new SkillsPacket(buf.readCompoundTag()); } public static class Handler{ public static void handle(final SkillsPacket msg, Supplier<NetworkEvent.Context> ctx) { Minecraft mc = Minecraft.getInstance(); ctx.get().enqueueWork(() -> { mc.player.getCapability(SkillCapability.SKILL_CAP).ifPresent(cap -> cap.deserializeNBT(msg.nbt)); }); ctx.get().setPacketHandled(true); } } } All other code is here.
-
[SOLVED] [1.15.2] NullPointerException: Saving entity NBT
I added this after @Mod.EventBusSubscriber @Mod.EventBusSubscriber(modid = Gielinorcraft.MODID, bus = Mod.EventBusSubscriber.Bus.MOD) And now everything works, thank you!
-
[SOLVED] [1.15.2] NullPointerException: Saving entity NBT
No, I'm not sure. This is my Main class: package com.lk1905.gielinorcraft; import org.apache.logging.log4j.Logger; import com.lk1905.gielinorcraft.api.skills.Skill; import com.lk1905.gielinorcraft.capability.skill.CapabilitySkills; import com.lk1905.gielinorcraft.capability.skill.SkillContainer; import com.lk1905.gielinorcraft.skills.AttackSkill; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; @Mod(Gielinorcraft.MODID) @Mod.EventBusSubscriber public class Gielinorcraft { public static Logger logger; public static final String MODID = "gielinorcraft"; public Gielinorcraft() { } @SubscribeEvent public static void onCommonSetup(FMLCommonSetupEvent e) { CapabilitySkills.register(); SkillContainer.registerNewSkill(AttackSkill.class); MinecraftForge.EVENT_BUS.register(Skill.class); MinecraftForge.EVENT_BUS.register(AttackSkill.class); } } Is that how its supposed to be added? Or is there something else I need to do?
-
[SOLVED] [1.15.2] NullPointerException: Saving entity NBT
You're right, when I try to open a second world I get this crash: Description: Exception in server tick loop java.lang.IllegalArgumentException: Cannot register a capability implementation multiple times : com.lk1905.gielinorcraft.api.capability.ISkillContainer at net.minecraftforge.common.capabilities.CapabilityManager.register(CapabilityManager.java:72) ~[forge-1.15.2-31.1.0_mapped_snapshot_20190719-1.14.3-recomp.jar:?] {re:classloading} at com.lk1905.gielinorcraft.capability.skill.CapabilitySkills.register(CapabilitySkills.java:26) ~[main/:?] {re:classloading} at com.lk1905.gielinorcraft.Gielinorcraft.serverStarting(Gielinorcraft.java:42) ~[main/:?] {re:classloading} at net.minecraftforge.eventbus.ASMEventHandler_2_Gielinorcraft_serverStarting_FMLServerStartingEvent.invoke(.dynamic) ~[?:?] {} at net.minecraftforge.eventbus.ASMEventHandler.invoke(ASMEventHandler.java:80) ~[eventbus-2.0.0-milestone.1-service.jar:?] {} at net.minecraftforge.eventbus.EventBus.post(EventBus.java:258) ~[eventbus-2.0.0-milestone.1-service.jar:?] {} at net.minecraftforge.fml.server.ServerLifecycleHooks.handleServerStarting(ServerLifecycleHooks.java:90) ~[?:?] {re:classloading} at net.minecraft.server.integrated.IntegratedServer.init(IntegratedServer.java:101) ~[?:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:635) [?:?] {re:classloading,pl:accesstransformer:B} at java.lang.Thread.run(Thread.java:745) [?:1.8.0_66] {}
-
[SOLVED] [1.15.2] NullPointerException: Saving entity NBT
I tried moving it back, and now i get this crash: Description: Loading entity NBT java.lang.NullPointerException: Loading entity NBT at com.lk1905.gielinorcraft.capability.CommonCapabilityProvider.deserializeNBT(CommonCapabilityProvider.java:51) ~[?:?] {re:classloading} at net.minecraftforge.common.capabilities.CapabilityDispatcher.deserializeNBT(CapabilityDispatcher.java:139) ~[?:?] {re:classloading} at net.minecraftforge.common.capabilities.CapabilityProvider.deserializeCaps(CapabilityProvider.java:96) ~[?:?] {re:classloading} at net.minecraft.entity.Entity.read(Entity.java:1600) ~[?:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.server.management.PlayerList.readPlayerDataFromFile(PlayerList.java:272) ~[?:?] {re:classloading} at net.minecraft.server.management.PlayerList.initializeConnectionToPlayer(PlayerList.java:112) ~[?:?] {re:classloading} at net.minecraft.network.login.ServerLoginNetHandler.tryAcceptPlayer(ServerLoginNetHandler.java:119) ~[?:?] {re:classloading} at net.minecraft.network.login.ServerLoginNetHandler.tick(ServerLoginNetHandler.java:63) ~[?:?] {re:classloading} at net.minecraft.network.NetworkManager.tick(NetworkManager.java:241) ~[?:?] {re:classloading} at net.minecraft.network.NetworkSystem.tick(NetworkSystem.java:148) ~[?:?] {re:classloading} at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:900) ~[?:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:818) ~[?:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:120) ~[?:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:659) ~[?:?] {re:classloading,pl:accesstransformer:B} at java.lang.Thread.run(Thread.java:745) ~[?:1.8.0_66] {} A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- Head -- Thread: Render thread Stacktrace: at com.lk1905.gielinorcraft.capability.CommonCapabilityProvider.deserializeNBT(CommonCapabilityProvider.java:51) at net.minecraftforge.common.capabilities.CapabilityDispatcher.deserializeNBT(CapabilityDispatcher.java:139) at net.minecraftforge.common.capabilities.CapabilityProvider.deserializeCaps(CapabilityProvider.java:96) -- Entity being loaded -- Details: Entity Type: minecraft:player (net.minecraft.entity.player.ServerPlayerEntity) Entity ID: 260 Entity Name: Dev Entity's Exact location: -99.06, 64.00, 174.46 Entity's Block location: World: (-100,64,174), Chunk: (at 12,4,14 in -7,10; contains blocks -112,0,160 to -97,255,175), Region: (-1,0; contains chunks -32,0 to -1,31, blocks -512,0,0 to -1,255,511) Entity's Momentum: 0.00, -0.08, 0.00 Entity's Passengers: [] Entity's Vehicle: ~~ERROR~~ NullPointerException: null Stacktrace: at net.minecraft.entity.Entity.read(Entity.java:1600) at net.minecraft.server.management.PlayerList.readPlayerDataFromFile(PlayerList.java:272) at net.minecraft.server.management.PlayerList.initializeConnectionToPlayer(PlayerList.java:112) at net.minecraft.network.login.ServerLoginNetHandler.tryAcceptPlayer(ServerLoginNetHandler.java:119) at net.minecraft.network.login.ServerLoginNetHandler.tick(ServerLoginNetHandler.java:63) at net.minecraft.network.NetworkManager.tick(NetworkManager.java:241) -- Ticking connection -- Details: Connection: net.minecraft.network.NetworkManager@7b4641db Stacktrace: at net.minecraft.network.NetworkSystem.tick(NetworkSystem.java:148) at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:900) at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:818) at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:120) at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:659) at java.lang.Thread.run(Thread.java:745) -- System Details -- Details: Minecraft Version: 1.15.2 Minecraft Version ID: 1.15.2 Operating System: Windows 10 (amd64) version 10.0 Java Version: 1.8.0_66, Oracle Corporation Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation Memory: 259039432 bytes (247 MB) / 643301376 bytes (613 MB) up to 820510720 bytes (782 MB) CPUs: 4 JVM Flags: 1 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump ModLauncher: 5.0.0-milestone.4+67+b1a340b ModLauncher launch target: fmluserdevclient ModLauncher naming: mcp ModLauncher services: /eventbus-2.0.0-milestone.1-service.jar eventbus PLUGINSERVICE /forge-1.15.2-31.1.0_mapped_snapshot_20190719-1.14.3-launcher.jar object_holder_definalize PLUGINSERVICE /forge-1.15.2-31.1.0_mapped_snapshot_20190719-1.14.3-launcher.jar runtime_enum_extender PLUGINSERVICE /accesstransformers-2.0.0-milestone.1-shadowed.jar accesstransformer PLUGINSERVICE /forge-1.15.2-31.1.0_mapped_snapshot_20190719-1.14.3-launcher.jar capability_inject_definalize PLUGINSERVICE /forge-1.15.2-31.1.0_mapped_snapshot_20190719-1.14.3-launcher.jar runtimedistcleaner PLUGINSERVICE /forge-1.15.2-31.1.0_mapped_snapshot_20190719-1.14.3-launcher.jar fml TRANSFORMATIONSERVICE FML: 31.1 Forge: net.minecraftforge:31.1.0 FML Language Providers: [email protected] minecraft@1 Mod List: client-extra.jar Minecraft {[email protected] DONE} forge-1.15.2-31.1.0_mapped_snapshot_20190719-1.14.3-recomp.jar Forge {[email protected] DONE} main Gielinorcraft {[email protected] DONE} Player Count: 0 / 8; [] Data Packs: vanilla, mod:forge (incompatible), mod:gielinorcraft (incompatible) Type: Integrated Server (map_client.txt) Is Modded: Definitely; Client brand changed to 'forge' Instead of "saving Entity NBT", I now have a problem with "Loading Entity NBT". When I had the capability registered in FMLServerStartingEvent, I had no problem.
-
[SOLVED] [1.15.2] NullPointerException: Saving entity NBT
I solved the problem. It had nothing to do with the Capability or the Provider class, but with how I was registering it in my Main class. I had the Capability registered under FMLCommonEvent, when I should have registered it under a FMLServerStartingEvent. So anyway, Problem Solved!
-
[SOLVED] [1.15.2] NullPointerException: Saving entity NBT
I'm working on a capability that should allow me to create rpg-like skills, and I need to save the data from those skills to the player. This is my CapabilitySkills class, in case the problem is actually in there: package com.lk1905.gielinorcraft.capability.skill; import com.lk1905.gielinorcraft.api.capability.ISkillContainer; import com.lk1905.gielinorcraft.api.utils.CapabilityUtils; import com.lk1905.gielinorcraft.capability.CommonCapabilityProvider; import net.minecraft.entity.Entity; import net.minecraft.entity.player.PlayerEntity; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.capabilities.CapabilityInject; import net.minecraftforge.common.capabilities.CapabilityManager; import net.minecraftforge.common.capabilities.ICapabilityProvider; import net.minecraftforge.event.AttachCapabilitiesEvent; import net.minecraftforge.event.entity.player.PlayerEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; @Mod.EventBusSubscriber public class CapabilitySkills { @CapabilityInject(ISkillContainer.class) private static Capability<ISkillContainer> skillContainerCapability; public static void register() { CapabilityManager.INSTANCE.register(ISkillContainer.class, new SkillStorage(), () -> new SkillContainer());//<---THIS LINE } @SubscribeEvent public static void attachCapability(AttachCapabilitiesEvent<Entity> e) { if(!(e.getObject() instanceof PlayerEntity)) { return; } SkillContainer newContainer = new SkillContainer(); e.addCapability(newContainer.getCapabilityID(), new CommonCapabilityProvider<>(skillContainerCapability, null, newContainer)); } @SubscribeEvent public static void onPlayerClone(final PlayerEvent.Clone e) { ISkillContainer oldCapability = (ISkillContainer) CapabilityUtils.getCapability(e.getOriginal(), skillContainerCapability); ISkillContainer newCapability = (ISkillContainer) CapabilityUtils.getCapability(e.getPlayer(), skillContainerCapability); newCapability.setAllSkills(oldCapability.getAllSkills()); } public static ISkillContainer getSkillContainer(ICapabilityProvider provider) { return (ISkillContainer) CapabilityUtils.getCapability(provider, skillContainerCapability); } public static Capability<ISkillContainer> getSkillCapability(){ return skillContainerCapability; } }
-
[SOLVED] [1.15.2] NullPointerException: Saving entity NBT
Hello, I've been stuck on a problem that I don't know how to fix. Crash report: Description: Saving entity NBT java.lang.NullPointerException: Saving entity NBT at com.lk1905.gielinorcraft.capability.CommonCapabilityProvider.serializeNBT(CommonCapabilityProvider.java:45) ~[?:?] {re:classloading} at net.minecraftforge.common.capabilities.CapabilityDispatcher.serializeNBT(CapabilityDispatcher.java:127) ~[?:?] {re:classloading} at net.minecraftforge.common.capabilities.CapabilityProvider.serializeCaps(CapabilityProvider.java:86) ~[?:?] {re:classloading} at net.minecraft.entity.Entity.writeWithoutTypeId(Entity.java:1523) ~[?:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.server.integrated.IntegratedPlayerList.writePlayerData(IntegratedPlayerList.java:27) ~[?:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.server.management.PlayerList.saveAllPlayerData(PlayerList.java:631) ~[?:?] {re:classloading} at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:114) ~[?:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:659) [?:?] {re:classloading,pl:accesstransformer:B} at java.lang.Thread.run(Thread.java:745) [?:1.8.0_66] {} A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- Head -- Thread: Server thread Stacktrace: at com.lk1905.gielinorcraft.capability.CommonCapabilityProvider.serializeNBT(CommonCapabilityProvider.java:45) at net.minecraftforge.common.capabilities.CapabilityDispatcher.serializeNBT(CapabilityDispatcher.java:127) at net.minecraftforge.common.capabilities.CapabilityProvider.serializeCaps(CapabilityProvider.java:86) -- Entity being saved -- Details: Entity Type: minecraft:player (net.minecraft.entity.player.ServerPlayerEntity) Entity ID: 435 Entity Name: Dev Entity's Exact location: -229.50, 64.00, -165.50 Entity's Block location: World: (-230,64,-166), Chunk: (at 10,4,10 in -15,-11; contains blocks -240,0,-176 to -225,255,-161), Region: (-1,-1; contains chunks -32,-32 to -1,-1, blocks -512,0,-512 to -1,255,-1) Entity's Momentum: 0.00, -0.08, 0.00 Entity's Passengers: [] Entity's Vehicle: ~~ERROR~~ NullPointerException: null Stacktrace: at net.minecraft.entity.Entity.writeWithoutTypeId(Entity.java:1523) at net.minecraft.server.integrated.IntegratedPlayerList.writePlayerData(IntegratedPlayerList.java:27) at net.minecraft.server.management.PlayerList.saveAllPlayerData(PlayerList.java:631) at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:114) at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:659) at java.lang.Thread.run(Thread.java:745) -- System Details -- Details: Minecraft Version: 1.15.2 Minecraft Version ID: 1.15.2 Operating System: Windows 10 (amd64) version 10.0 Java Version: 1.8.0_66, Oracle Corporation Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation Memory: 249239288 bytes (237 MB) / 651689984 bytes (621 MB) up to 820510720 bytes (782 MB) CPUs: 4 JVM Flags: 1 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump ModLauncher: 5.0.0-milestone.4+67+b1a340b ModLauncher launch target: fmluserdevclient ModLauncher naming: mcp ModLauncher services: /eventbus-2.0.0-milestone.1-service.jar eventbus PLUGINSERVICE /forge-1.15.2-31.1.0_mapped_snapshot_20190719-1.14.3-launcher.jar object_holder_definalize PLUGINSERVICE /forge-1.15.2-31.1.0_mapped_snapshot_20190719-1.14.3-launcher.jar runtime_enum_extender PLUGINSERVICE /accesstransformers-2.0.0-milestone.1-shadowed.jar accesstransformer PLUGINSERVICE /forge-1.15.2-31.1.0_mapped_snapshot_20190719-1.14.3-launcher.jar capability_inject_definalize PLUGINSERVICE /forge-1.15.2-31.1.0_mapped_snapshot_20190719-1.14.3-launcher.jar runtimedistcleaner PLUGINSERVICE /forge-1.15.2-31.1.0_mapped_snapshot_20190719-1.14.3-launcher.jar fml TRANSFORMATIONSERVICE FML: 31.1 Forge: net.minecraftforge:31.1.0 FML Language Providers: [email protected] minecraft@1 Mod List: client-extra.jar Minecraft {[email protected] DONE} forge-1.15.2-31.1.0_mapped_snapshot_20190719-1.14.3-recomp.jar Forge {[email protected] DONE} main Gielinorcraft {[email protected] DONE} Player Count: 1 / 8; [ServerPlayerEntity['Dev'/435, l='New World', x=-229.50, y=64.00, z=-165.50]] Data Packs: vanilla, mod:forge (incompatible), mod:gielinorcraft (incompatible) Type: Integrated Server (map_client.txt) Is Modded: Definitely; Client brand changed to 'forge' CommonCapabilityProvider.java package com.lk1905.gielinorcraft.capability; import javax.annotation.Nullable; import net.minecraft.nbt.INBT; import net.minecraft.util.Direction; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.capabilities.ICapabilitySerializable; import net.minecraftforge.common.util.LazyOptional; public class CommonCapabilityProvider<HANDLER> implements ICapabilitySerializable<INBT>{ protected final Capability<HANDLER> capability; protected final Direction side; protected final HANDLER instance; protected final LazyOptional<HANDLER> lazyOptional; public CommonCapabilityProvider(final Capability<HANDLER> capability, @Nullable final Direction side, @Nullable final HANDLER instance) { this.capability = capability; this.side = side; 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> cap, @Nullable final Direction side) { return capability.orEmpty(cap, lazyOptional); } @Nullable @Override public INBT serializeNBT() { return capability.writeNBT(getInstance(), getFacing());//<-- THIS LINE } @Override public void deserializeNBT(INBT nbt) { capability.readNBT(getInstance(), getFacing(), nbt); } @Nullable public Direction getFacing() { return side; } @Nullable public HANDLER getInstance() { return instance; } } Other code if you need to see it is here: https://github.com/LK1905/GielinorCraft
-
1.14.4 NullPointerException
I tried removing the second getCapability() constructor(the one that returns capability) and referring to capability directly. Made no difference. Also added the @Nullable annotation to see if that did anything. Made no difference either. Current code for CommonCapabilityProvider.java package com.lk1905.gielinorcraft.capability; import javax.annotation.Nullable; import net.minecraft.nbt.INBT; import net.minecraft.util.Direction; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.capabilities.ICapabilitySerializable; import net.minecraftforge.common.util.LazyOptional; public class CommonCapabilityProvider<HANDLER> implements ICapabilitySerializable<INBT>{ protected final Capability<HANDLER> capability; protected final Direction side; protected final HANDLER instance; protected final LazyOptional<HANDLER> lazyOptional; public CommonCapabilityProvider(final Capability<HANDLER> capability, @Nullable final Direction side, @Nullable final HANDLER instance) { this.capability = capability; this.side = side; 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> cap, @Nullable final Direction side) { return capability.orEmpty(cap, lazyOptional); } @Nullable @Override public INBT serializeNBT() { return capability.writeNBT(getInstance(), getFacing());//<-- THIS LINE } @Override public void deserializeNBT(INBT nbt) { capability.readNBT(getInstance(), getFacing(), nbt); } @Nullable public Direction getFacing() { return side; } @Nullable public HANDLER getInstance() { return instance; } }
-
1.14.4 NullPointerException
I solved the problem. I was trying to register my capabilities in my Main class like this: public Gielinorcraft() { CapabilitySkills.register(); SkillContainer.registerNewSkill(AttackSkill.class); MinecraftForge.EVENT_BUS.register(AttackSkill.class); } When i should have been registering them in a FMLCommonSetupEvent, like this: public Gielinorcraft() { } @SubscribeEvent public static void onCommonSetup(FMLCommonSetupEvent e) { CapabilitySkills.register(); SkillContainer.registerNewSkill(AttackSkill.class); MinecraftForge.EVENT_BUS.register(AttackSkill.class); } I can now load Minecraft. However, I now have another problem. When I try to load a world, I get this error: [16Feb2020 17:53:25.510] [Server thread/ERROR] [net.minecraft.server.MinecraftServer/]: Encountered an unexpected exception net.minecraft.crash.ReportedException: Saving entity NBT at net.minecraft.entity.Entity.writeWithoutTypeId(Entity.java:1592) ~[?:?] at net.minecraft.server.integrated.IntegratedPlayerList.writePlayerData(IntegratedPlayerList.java:27) ~[?:?] at net.minecraft.server.management.PlayerList.saveAllPlayerData(PlayerList.java:626) ~[?:?] at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:112) ~[?:?] at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:646) [?:?] at java.lang.Thread.run(Unknown Source) [?:1.8.0_161] Caused by: java.lang.NullPointerException at com.lk1905.gielinorcraft.capability.CommonCapabilityProvider.serializeNBT(CommonCapabilityProvider.java:49) ~[?:?] at net.minecraftforge.common.capabilities.CapabilityDispatcher.serializeNBT(CapabilityDispatcher.java:127) ~[?:?] at net.minecraftforge.common.capabilities.CapabilityProvider.serializeCaps(CapabilityProvider.java:86) ~[?:?] at net.minecraft.entity.Entity.writeWithoutTypeId(Entity.java:1567) ~[?:?] ... 5 more [16Feb2020 17:53:25.670] [Server thread/ERROR] [net.minecraft.server.MinecraftServer/]: This crash report has been saved to: C:\Users\Liam\eclipse-workspace\Gielinorcraft\run\.\crash-reports\crash-2020-02-16_17.53.25-server.txt [16Feb2020 17:53:25.690] [Server thread/INFO] [net.minecraft.server.MinecraftServer/]: Stopping server [16Feb2020 17:53:25.693] [Server thread/INFO] [net.minecraft.server.MinecraftServer/]: Saving players [16Feb2020 17:53:25.695] [Server thread/ERROR] [net.minecraft.server.MinecraftServer/]: Exception stopping the server net.minecraft.crash.ReportedException: Saving entity NBT at net.minecraft.entity.Entity.writeWithoutTypeId(Entity.java:1592) ~[?:?] at net.minecraft.server.integrated.IntegratedPlayerList.writePlayerData(IntegratedPlayerList.java:27) ~[?:?] at net.minecraft.server.management.PlayerList.saveAllPlayerData(PlayerList.java:626) ~[?:?] at net.minecraft.server.MinecraftServer.stopServer(MinecraftServer.java:559) ~[?:?] at net.minecraft.server.integrated.IntegratedServer.stopServer(IntegratedServer.java:235) ~[?:?] at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:685) [?:?] at java.lang.Thread.run(Unknown Source) [?:1.8.0_161] Caused by: java.lang.NullPointerException at com.lk1905.gielinorcraft.capability.CommonCapabilityProvider.serializeNBT(CommonCapabilityProvider.java:49) ~[?:?] at net.minecraftforge.common.capabilities.CapabilityDispatcher.serializeNBT(CapabilityDispatcher.java:127) ~[?:?] at net.minecraftforge.common.capabilities.CapabilityProvider.serializeCaps(CapabilityProvider.java:86) ~[?:?] at net.minecraft.entity.Entity.writeWithoutTypeId(Entity.java:1567) ~[?:?] ... 6 more [16Feb2020 17:53:27.042] [Client thread/INFO] [STDOUT/]: [net.minecraft.util.registry.Bootstrap:printToSYSOUT:106]: ---- Minecraft Crash Report ---- // Hey, that tickles! Hehehe! Time: 16/02/20 5:53 PM Description: Saving entity NBT java.lang.NullPointerException: Saving entity NBT at com.lk1905.gielinorcraft.capability.CommonCapabilityProvider.serializeNBT(CommonCapabilityProvider.java:49) ~[?:?] {} at net.minecraftforge.common.capabilities.CapabilityDispatcher.serializeNBT(CapabilityDispatcher.java:127) ~[?:?] {} at net.minecraftforge.common.capabilities.CapabilityProvider.serializeCaps(CapabilityProvider.java:86) ~[?:?] {} at net.minecraft.entity.Entity.writeWithoutTypeId(Entity.java:1567) ~[?:?] {pl:accesstransformer:B} at net.minecraft.server.integrated.IntegratedPlayerList.writePlayerData(IntegratedPlayerList.java:27) ~[?:?] {pl:runtimedistcleaner:A} at net.minecraft.server.management.PlayerList.saveAllPlayerData(PlayerList.java:626) ~[?:?] {} at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:112) ~[?:?] {pl:runtimedistcleaner:A} at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:646) ~[?:?] {pl:accesstransformer:B} at java.lang.Thread.run(Unknown Source) ~[?:1.8.0_161] {} A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- Head -- Thread: Client thread Stacktrace: at com.lk1905.gielinorcraft.capability.CommonCapabilityProvider.serializeNBT(CommonCapabilityProvider.java:49) at net.minecraftforge.common.capabilities.CapabilityDispatcher.serializeNBT(CapabilityDispatcher.java:127) at net.minecraftforge.common.capabilities.CapabilityProvider.serializeCaps(CapabilityProvider.java:86) -- Entity being saved -- Details: Entity Type: minecraft:player (net.minecraft.entity.player.ServerPlayerEntity) Entity ID: 103 Entity Name: Dev Entity's Exact location: 106.12, 64.00, 258.45 Entity's Block location: World: (106,64,258), Chunk: (at 10,4,2 in 6,16; contains blocks 96,0,256 to 111,255,271), Region: (0,0; contains chunks 0,0 to 31,31, blocks 0,0,0 to 511,255,511) Entity's Momentum: 0.00, -0.08, 0.00 Entity's Passengers: [] Entity's Vehicle: ~~ERROR~~ NullPointerException: null Stacktrace: at net.minecraft.entity.Entity.writeWithoutTypeId(Entity.java:1567) at net.minecraft.server.integrated.IntegratedPlayerList.writePlayerData(IntegratedPlayerList.java:27) at net.minecraft.server.management.PlayerList.saveAllPlayerData(PlayerList.java:626) at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:112) at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:646) at java.lang.Thread.run(Unknown Source) -- System Details -- Details: Minecraft Version: 1.14.4 Minecraft Version ID: 1.14.4 Operating System: Windows 10 (amd64) version 10.0 Java Version: 1.8.0_161, Oracle Corporation Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation Memory: 187450632 bytes (178 MB) / 598736896 bytes (571 MB) up to 820510720 bytes (782 MB) CPUs: 4 JVM Flags: 1 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump ModLauncher: 3.2.0+60+b86c1d4 ModLauncher launch target: fmluserdevclient ModLauncher naming: mcp ModLauncher services: /eventbus-1.0.0-service.jar eventbus PLUGINSERVICE /forge-1.14.4-28.1.0_mapped_snapshot_20190719-1.14.3-launcher.jar object_holder_definalize PLUGINSERVICE /forge-1.14.4-28.1.0_mapped_snapshot_20190719-1.14.3-launcher.jar runtime_enum_extender PLUGINSERVICE /accesstransformers-1.0.0-shadowed.jar accesstransformer PLUGINSERVICE /forge-1.14.4-28.1.0_mapped_snapshot_20190719-1.14.3-launcher.jar capability_inject_definalize PLUGINSERVICE /forge-1.14.4-28.1.0_mapped_snapshot_20190719-1.14.3-launcher.jar runtimedistcleaner PLUGINSERVICE /forge-1.14.4-28.1.0_mapped_snapshot_20190719-1.14.3-launcher.jar fml TRANSFORMATIONSERVICE FML: 28.1 Forge: net.minecraftforge:28.1.0 FML Language Providers: [email protected] minecraft@1 Mod List: forge-1.14.4-28.1.0_mapped_snapshot_20190719-1.14.3-recomp.jar Forge {[email protected] DONE} main Gielinorcraft {[email protected] DONE} client-extra.jar Minecraft {[email protected] DONE} Player Count: 1 / 8; [ServerPlayerEntity['Dev'/103, l='Test world', x=106.12, y=64.00, z=258.45]] Data Packs: vanilla, mod:gielinorcraft, mod:forge Type: Integrated Server (map_client.txt) Is Modded: Definitely; Client brand changed to 'forge' [16Feb2020 17:53:27.044] [Client thread/INFO] [STDOUT/]: [net.minecraft.util.registry.Bootstrap:printToSYSOUT:106]: #@!@# Game crashed! Crash report saved to: #@!@# .\crash-reports\crash-2020-02-16_17.53.25-server.txt CommonCapabilityProvider.java: package com.lk1905.gielinorcraft.capability; import net.minecraft.nbt.INBT; import net.minecraft.util.Direction; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.capabilities.ICapabilitySerializable; import net.minecraftforge.common.util.LazyOptional; public class CommonCapabilityProvider<HANDLER> implements ICapabilitySerializable<INBT>{ protected final Capability<HANDLER> capability; protected final Direction side; protected final HANDLER instance; protected final LazyOptional<HANDLER> lazyOptional; public CommonCapabilityProvider(Capability<HANDLER> capability, Direction side, HANDLER instance) { this.capability = capability; this.side = side; this.instance = instance; if(this.instance != null) { lazyOptional = LazyOptional.of(() -> this.instance); }else { lazyOptional = LazyOptional.empty(); } } @Override public <T> LazyOptional<T> getCapability(Capability<T> cap, Direction side) { return getCapability().orEmpty(cap, lazyOptional); } public final Capability<HANDLER> getCapability(){ return capability; } @Override public INBT serializeNBT() { return getCapability().writeNBT(getInstance(), getFacing());//<-- THIS LINE } @Override public void deserializeNBT(INBT nbt) { getCapability().readNBT(getInstance(), getFacing(), nbt); } public Direction getFacing() { return side; } public HANDLER getInstance() { return instance; } } Can anyone see what I'm doing wrong in this class?
-
1.14.4 NullPointerException
My Github: https://github.com/LK1905/GielinorCraft Log: [16Feb2020 10:24:40.474] [main/INFO] [cpw.mods.modlauncher.Launcher/MODLAUNCHER]: ModLauncher running: args [--gameDir, ., --launchTarget, fmluserdevclient, --fml.mcpVersion, 20190829.143755, --fml.mcVersion, 1.14.4, --fml.forgeGroup, net.minecraftforge, --fml.forgeVersion, 28.1.0, --version, MOD_DEV, --assetIndex, 1.14, --assetsDir, C:\Users\Liam\.gradle\caches\forge_gradle\assets, --username, Dev, --accessToken, ????????, --userProperties, {}] [16Feb2020 10:24:40.505] [main/INFO] [cpw.mods.modlauncher.Launcher/MODLAUNCHER]: ModLauncher 3.2.0+60+b86c1d4 starting: java version 1.8.0_161 by Oracle Corporation [16Feb2020 10:24:44.057] [main/INFO] [net.minecraftforge.fml.loading.FixSSL/CORE]: Added Lets Encrypt root certificates as additional trust [16Feb2020 10:24:51.727] [main/INFO] [cpw.mods.modlauncher.LaunchServiceHandler/MODLAUNCHER]: Launching target 'fmluserdevclient' with arguments [--version, MOD_DEV, --gameDir, ., --assetsDir, C:\Users\Liam\.gradle\caches\forge_gradle\assets, --assetIndex, 1.14, --username, Dev, --accessToken, ????????, --userProperties, {}] [16Feb2020 10:25:15.154] [Client thread/INFO] [net.minecraft.client.Minecraft/]: Setting user: Dev [16Feb2020 10:26:15.541] [Client thread/WARN] [net.minecraft.client.GameSettings/]: Skipping bad option: lastServer: [16Feb2020 10:26:15.895] [Client thread/INFO] [net.minecraft.client.Minecraft/]: LWJGL Version: 3.2.2 build 10 [16Feb2020 10:26:39.403] [modloading-worker-2/INFO] [net.minecraftforge.common.ForgeMod/FORGEMOD]: Forge mod loading, version 28.1.0, for MC 1.14.4 with MCP 20190829.143755 [16Feb2020 10:26:39.404] [modloading-worker-2/INFO] [net.minecraftforge.common.MinecraftForge/FORGE]: MinecraftForge v28.1.0 Initialized [16Feb2020 10:26:39.809] [modloading-worker-1/ERROR] [net.minecraftforge.fml.javafmlmod.FMLModContainer/LOADING]: Failed to create mod instance. ModID: gielinorcraft, class com.lk1905.gielinorcraft.Gielinorcraft java.lang.NullPointerException: null at net.minecraftforge.common.capabilities.CapabilityManager.register(CapabilityManager.java:79) ~[?:?] at com.lk1905.gielinorcraft.capability.skill.CapabilitySkills.register(CapabilitySkills.java:26) ~[?:?] at com.lk1905.gielinorcraft.Gielinorcraft.<init>(Gielinorcraft.java:21) ~[?:?] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.8.0_161] at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) ~[?:1.8.0_161] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) ~[?:1.8.0_161] at java.lang.reflect.Constructor.newInstance(Unknown Source) ~[?:1.8.0_161] at java.lang.Class.newInstance(Unknown Source) ~[?:1.8.0_161] at net.minecraftforge.fml.javafmlmod.FMLModContainer.constructMod(FMLModContainer.java:131) ~[?:28.1] at java.util.function.Consumer.lambda$andThen$0(Unknown Source) ~[?:1.8.0_161] at java.util.function.Consumer.lambda$andThen$0(Unknown Source) ~[?:1.8.0_161] at net.minecraftforge.fml.ModContainer.transitionState(ModContainer.java:112) ~[?:?] at net.minecraftforge.fml.ModList.lambda$null$10(ModList.java:133) ~[?:?] at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) ~[?:1.8.0_161] at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(Unknown Source) ~[?:1.8.0_161] at java.util.stream.AbstractPipeline.copyInto(Unknown Source) ~[?:1.8.0_161] at java.util.stream.ForEachOps$ForEachTask.compute(Unknown Source) ~[?:1.8.0_161] at java.util.concurrent.CountedCompleter.exec(Unknown Source) ~[?:1.8.0_161] at java.util.concurrent.ForkJoinTask.doExec(Unknown Source) ~[?:1.8.0_161] at java.util.concurrent.ForkJoinTask.doInvoke(Unknown Source) ~[?:1.8.0_161] at java.util.concurrent.ForkJoinTask.invoke(Unknown Source) ~[?:1.8.0_161] at java.util.stream.ForEachOps$ForEachOp.evaluateParallel(Unknown Source) ~[?:1.8.0_161] at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateParallel(Unknown Source) ~[?:1.8.0_161] at java.util.stream.AbstractPipeline.evaluate(Unknown Source) ~[?:1.8.0_161] at java.util.stream.ReferencePipeline.forEach(Unknown Source) ~[?:1.8.0_161] at java.util.stream.ReferencePipeline$Head.forEach(Unknown Source) ~[?:1.8.0_161] at net.minecraftforge.fml.ModList.lambda$dispatchParallelEvent$11(ModList.java:133) ~[?:?] at java.util.concurrent.ForkJoinTask$AdaptedRunnableAction.exec(Unknown Source) [?:1.8.0_161] at java.util.concurrent.ForkJoinTask.doExec(Unknown Source) [?:1.8.0_161] at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(Unknown Source) [?:1.8.0_161] at java.util.concurrent.ForkJoinPool.runWorker(Unknown Source) [?:1.8.0_161] at java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source) [?:1.8.0_161] [16Feb2020 10:26:41.171] [Client thread/FATAL] [net.minecraftforge.fml.ModLoader/LOADING]: Failed to complete lifecycle event CONSTRUCT, 1 errors found [16Feb2020 10:26:41.172] [Client thread/FATAL] [net.minecraftforge.eventbus.EventBus/EVENTBUS]: EventBus 0 shutting down - future events will not be posted. java.lang.Exception: stacktrace at net.minecraftforge.eventbus.EventBus.shutdown(EventBus.java:278) ~[eventbus-1.0.0-service.jar:?] at net.minecraftforge.fml.client.ClientModLoader.lambda$createRunnableWithCatch$5(ClientModLoader.java:97) ~[forge-1.14.4-28.1.0_mapped_snapshot_20190719-1.14.3-recomp.jar:?] at net.minecraftforge.fml.client.ClientModLoader.begin(ClientModLoader.java:79) ~[forge-1.14.4-28.1.0_mapped_snapshot_20190719-1.14.3-recomp.jar:?] at net.minecraft.client.Minecraft.init(Minecraft.java:456) ~[forge-1.14.4-28.1.0_mapped_snapshot_20190719-1.14.3-recomp.jar:?] at net.minecraft.client.Minecraft.run(Minecraft.java:365) ~[forge-1.14.4-28.1.0_mapped_snapshot_20190719-1.14.3-recomp.jar:?] at net.minecraft.client.main.Main.main(Main.java:128) ~[forge-1.14.4-28.1.0_mapped_snapshot_20190719-1.14.3-recomp.jar:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_161] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_161] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_161] at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_161] at net.minecraftforge.userdev.FMLUserdevClientLaunchProvider.lambda$launchService$0(FMLUserdevClientLaunchProvider.java:55) ~[forge-1.14.4-28.1.0_mapped_snapshot_20190719-1.14.3-recomp.jar:?] at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:37) [modlauncher-3.2.0.jar:?] at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:50) [modlauncher-3.2.0.jar:?] at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:68) [modlauncher-3.2.0.jar:?] at cpw.mods.modlauncher.Launcher.run(Launcher.java:80) [modlauncher-3.2.0.jar:?] at cpw.mods.modlauncher.Launcher.main(Launcher.java:65) [modlauncher-3.2.0.jar:?] at net.minecraftforge.userdev.LaunchTesting.main(LaunchTesting.java:101) [forge-1.14.4-28.1.0_mapped_snapshot_20190719-1.14.3-recomp.jar:?] [16Feb2020 10:26:55.621] [Client thread/INFO] [com.mojang.text2speech.NarratorWindows/]: Narrator library for x64 successfully loaded [16Feb2020 10:26:58.384] [Thread-1/FATAL] [net.minecraftforge.common.ForgeConfig/CORE]: Forge config just got changed on the file system! [16Feb2020 10:26:58.386] [Server-Worker-4/ERROR] [net.minecraftforge.fml.ModLoader/LOADING]: Skipping lifecycle event SETUP, 1 errors found. [16Feb2020 10:26:58.387] [Server-Worker-4/FATAL] [net.minecraftforge.fml.ModLoader/LOADING]: Failed to complete lifecycle event SETUP, 1 errors found [16Feb2020 10:26:58.387] [Server-Worker-4/FATAL] [net.minecraftforge.eventbus.EventBus/EVENTBUS]: EventBus 0 shutting down - future events will not be posted. java.lang.Exception: stacktrace at net.minecraftforge.eventbus.EventBus.shutdown(EventBus.java:278) ~[eventbus-1.0.0-service.jar:?] at net.minecraftforge.fml.client.ClientModLoader.lambda$createRunnableWithCatch$5(ClientModLoader.java:97) ~[?:?] at net.minecraftforge.fml.client.ClientModLoader.startModLoading(ClientModLoader.java:105) ~[?:?] at net.minecraftforge.fml.client.ClientModLoader.lambda$onreload$3(ClientModLoader.java:87) ~[?:?] at net.minecraftforge.fml.client.ClientModLoader.lambda$createRunnableWithCatch$5(ClientModLoader.java:95) ~[?:?] at java.util.concurrent.CompletableFuture$AsyncRun.run(Unknown Source) [?:1.8.0_161] at java.util.concurrent.CompletableFuture$AsyncRun.exec(Unknown Source) [?:1.8.0_161] at java.util.concurrent.ForkJoinTask.doExec(Unknown Source) [?:1.8.0_161] at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(Unknown Source) [?:1.8.0_161] at java.util.concurrent.ForkJoinPool.runWorker(Unknown Source) [?:1.8.0_161] at java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source) [?:1.8.0_161] [16Feb2020 10:27:07.462] [Realms Notification Availability checker #1/INFO] [com.mojang.realmsclient.client.RealmsClient/]: Could not authorize you against Realms server: Invalid session id [16Feb2020 10:27:27.487] [Server-Worker-4/ERROR] [net.minecraftforge.fml.ModLoader/LOADING]: Skipping lifecycle event ENQUEUE_IMC, 1 errors found. [16Feb2020 10:27:27.488] [Server-Worker-4/FATAL] [net.minecraftforge.fml.ModLoader/LOADING]: Failed to complete lifecycle event ENQUEUE_IMC, 1 errors found [16Feb2020 10:27:27.488] [Server-Worker-4/FATAL] [net.minecraftforge.eventbus.EventBus/EVENTBUS]: EventBus 0 shutting down - future events will not be posted. java.lang.Exception: stacktrace at net.minecraftforge.eventbus.EventBus.shutdown(EventBus.java:278) ~[eventbus-1.0.0-service.jar:?] at net.minecraftforge.fml.client.ClientModLoader.lambda$createRunnableWithCatch$5(ClientModLoader.java:97) ~[?:?] at net.minecraftforge.fml.client.ClientModLoader.finishModLoading(ClientModLoader.java:118) ~[?:?] at net.minecraftforge.fml.client.ClientModLoader.lambda$onreload$4(ClientModLoader.java:89) ~[?:?] at java.util.concurrent.CompletableFuture.uniRun(Unknown Source) [?:1.8.0_161] at java.util.concurrent.CompletableFuture$UniRun.tryFire(Unknown Source) [?:1.8.0_161] at java.util.concurrent.CompletableFuture$Completion.exec(Unknown Source) [?:1.8.0_161] at java.util.concurrent.ForkJoinTask.doExec(Unknown Source) [?:1.8.0_161] at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(Unknown Source) [?:1.8.0_161] at java.util.concurrent.ForkJoinPool.runWorker(Unknown Source) [?:1.8.0_161] at java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source) [?:1.8.0_161] [16Feb2020 10:27:27.533] [Client thread/WARN] [net.minecraft.client.GameSettings/]: Skipping bad option: lastServer: [16Feb2020 10:27:29.123] [Client thread/INFO] [net.minecraft.client.audio.SoundSystem/]: OpenAL initialized. [16Feb2020 10:27:29.162] [Client thread/INFO] [net.minecraft.client.audio.SoundEngine/SOUNDS]: Sound engine started [16Feb2020 10:27:30.550] [Client thread/INFO] [net.minecraft.client.renderer.texture.AtlasTexture/]: Created: 512x512 textures-atlas [16Feb2020 10:27:34.989] [Client thread/INFO] [net.minecraft.client.renderer.texture.AtlasTexture/]: Created: 256x256 textures/particle-atlas [16Feb2020 10:27:35.013] [Client thread/INFO] [net.minecraft.client.renderer.texture.AtlasTexture/]: Created: 256x256 textures/painting-atlas [16Feb2020 10:27:35.020] [Client thread/INFO] [net.minecraft.client.renderer.texture.AtlasTexture/]: Created: 128x128 textures/mob_effect-atlas
-
1.14.4 NullPointerException
Hello, I'm working on a capability that allows the player to train rpg-like skills, but I have come across a problem that I can't see the cause of. Relevant part of the crash report: java.lang.NullPointerException: null at net.minecraftforge.common.capabilities.CapabilityManager.register(CapabilityManager.java:79) ~[?:?] at com.lk1905.gielinorcraft.capability.skill.CapabilitySkills.register(CapabilitySkills.java:26) ~[?:?] at com.lk1905.gielinorcraft.Gielinorcraft.<init>(Gielinorcraft.java:21) ~[?:?] The error is on the CapabilityManager.INSTANCE.register line in the CapabilitySkills class. CapabilitySkills.java package com.lk1905.gielinorcraft.capability.skill; import com.lk1905.gielinorcraft.api.capability.ISkillContainer; import com.lk1905.gielinorcraft.api.utils.CapabilityUtils; import com.lk1905.gielinorcraft.capability.CommonCapabilityProvider; import net.minecraft.entity.Entity; import net.minecraft.entity.player.PlayerEntity; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.capabilities.CapabilityInject; import net.minecraftforge.common.capabilities.CapabilityManager; import net.minecraftforge.common.capabilities.ICapabilityProvider; import net.minecraftforge.event.AttachCapabilitiesEvent; import net.minecraftforge.event.entity.player.PlayerEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; @Mod.EventBusSubscriber public class CapabilitySkills { @CapabilityInject(ISkillContainer.class) private static Capability<ISkillContainer> skillContainerCapability; public static void register() { CapabilityManager.INSTANCE.register(ISkillContainer.class, new SkillStorage(), () -> new SkillContainer());//<---THIS LINE } @SubscribeEvent public static void attachCapability(AttachCapabilitiesEvent<Entity> e) { if(!(e.getObject() instanceof PlayerEntity)) { return; } SkillContainer newContainer = new SkillContainer(); e.addCapability(newContainer.getCapabilityID(), new CommonCapabilityProvider<>(skillContainerCapability, null, newContainer)); } @SubscribeEvent public static void onPlayerClone(final PlayerEvent.Clone e) { ISkillContainer oldCapability = (ISkillContainer) CapabilityUtils.getCapability(e.getOriginal(), null); ISkillContainer newCapability = (ISkillContainer) CapabilityUtils.getCapability(e.getPlayer(), null); newCapability.setAllSkills(oldCapability.getAllSkills()); } public static ISkillContainer getSkillContainer(ICapabilityProvider provider) { return (ISkillContainer) CapabilityUtils.getCapability(provider, skillContainerCapability); } public static Capability<ISkillContainer> getSkillCapability(){ return skillContainerCapability; } } My main class: Gielinorcraft.java package com.lk1905.gielinorcraft; import org.apache.logging.log4j.Logger; import com.lk1905.gielinorcraft.capability.skill.CapabilitySkills; import com.lk1905.gielinorcraft.capability.skill.SkillContainer; import com.lk1905.gielinorcraft.skills.AttackSkill; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.fml.common.Mod; @Mod(Gielinorcraft.MODID) public class Gielinorcraft { public static Logger logger; public static final String MODID = "gielinorcraft"; public Gielinorcraft() { CapabilitySkills.register(); SkillContainer.registerNewSkill(AttackSkill.class); MinecraftForge.EVENT_BUS.register(AttackSkill.class); } } SkillStorage.java package com.lk1905.gielinorcraft.capability.skill; import java.util.Map; import com.lk1905.gielinorcraft.api.capability.ISkillContainer; import com.lk1905.gielinorcraft.api.skills.ISkill; import net.minecraft.nbt.CompoundNBT; import net.minecraft.nbt.INBT; import net.minecraft.util.Direction; import net.minecraftforge.common.capabilities.Capability; public class SkillStorage implements Capability.IStorage<ISkillContainer>{ public SkillStorage() { } @Override public CompoundNBT writeNBT(Capability<ISkillContainer> capability, ISkillContainer instance, Direction side) { CompoundNBT skillData = new CompoundNBT(); for(Map.Entry<String, ISkill> entry : instance.getAllSkills().entrySet()) { skillData.put(entry.getKey(), entry.getValue().serializeNBT()); } return skillData; } @Override public void readNBT(Capability<ISkillContainer> capability, ISkillContainer instance, Direction side, INBT nbt) { CompoundNBT skillData = (CompoundNBT) nbt; for(String key : skillData.keySet()) { instance.getSkill(key).deserializeNBT(skillData.getCompound(key)); } } } SkillContainer.java package com.lk1905.gielinorcraft.capability.skill; import java.nio.charset.Charset; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; import com.lk1905.gielinorcraft.Gielinorcraft; import com.lk1905.gielinorcraft.api.capability.ISkillContainer; import com.lk1905.gielinorcraft.api.skills.ISkill; import io.netty.buffer.ByteBuf; import net.minecraft.util.ResourceLocation; public class SkillContainer implements ISkillContainer{ private final static Set<Class<? extends ISkill>> skillClasses = new HashSet<>(); private final Map<String, ISkill> skills; public SkillContainer() { skills = new HashMap<>(); for(Class<? extends ISkill> skillClass : skillClasses) { ISkill skill; try { skill = skillClass.newInstance(); }catch(InstantiationException | IllegalAccessException e) { Gielinorcraft.logger.error("Failed to initialise skill instance from class descriptor: " + skillClass.getName()); continue; } skills.put(skill.getName(), skill); } } @Override public ISkill getSkill(String name) { return this.skills.get(name); } @Override public void setAllSkills(Map<String, ISkill> newSkills) { this.skills.putAll(newSkills); } @Override public void serializePacket(ByteBuf buf) { buf.writeInt(skills.size()); for(ISkill skill : skills.values()) { buf.writeInt(skill.getName().length()); buf.writeCharSequence(skill.getName(), Charset.defaultCharset()); skill.serializePacket(buf); } } @Override public void deserializePacket(ByteBuf buf) { int numberOfSkills = buf.readInt(); for(int i = 0; i < numberOfSkills; i++) { int lengthOfSkillName = buf.readInt(); String skillName = buf.readCharSequence(lengthOfSkillName, Charset.defaultCharset()).toString(); getSkill(skillName).deserializePacket(buf); } } @Override public ResourceLocation getCapabilityID() { return new ResourceLocation(Gielinorcraft.MODID, "skills"); } @Override public Map<String, ISkill> getAllSkills(){ return skills; } @Override public Map<String, Double> getAllSkillXP(){ Map<String, Double> skillXP = new HashMap<>(); for(Map.Entry<String, ISkill> entry : skills.entrySet()) { skillXP.put(entry.getKey(), entry.getValue().getXP()); } return skillXP; } public static void registerNewSkill(Class<? extends ISkill> skillClass) { skillClasses.add(skillClass); } } I think thats all the relevant classes, If you need to see others let me know. I'm guessing the problem is with either the SkillContainer or SkillStorage class, but I Can't see what. Thanks
-
[1.12.2] java.lang.NullPointerException: Exception in server tick loop
My OreCopper class:
-
[1.12.2] java.lang.NullPointerException: Exception in server tick loop
I've been having a problem testing my mod, where it freezes when it attempts to load terrain. Crash report: The report suggests there is a problem at line 27 in my OreGen.java class, which is this class (Line 27 is under Case 0): I can't actually see any problems with any of the code in this class, so the only thing I can think of is I've initialized/registered something wrong, although I can't see anything wrong in any of those classes either, but I'll post the classes I think are relevant under here anyway. My Main class: My CommonProxy class: My ClientProxy class: And my ModBlocks class: Does anyone know what the problem is, or what I've done wrong?
IPS spam blocked by CleanTalk.