Posted January 8, 20214 yr Hello, I update my mod from 1.15.2 (which works perfectly) to 1.16.4. In my mod, there are items to spawn different custom mobs. The problem is than they don't spawn and I have message like in the title :"Error executing task on Server" : [16:43:36] [Server thread/FATAL] [minecraft/ThreadTaskExecutor]: Error executing task on Server java.lang.NullPointerException: null at net.minecraft.entity.ai.attributes.AttributeModifierManager.getAttributeValue(AttributeModifierManager.java:67) ~[forge:?] {re:classloading} at net.minecraft.entity.LivingEntity.getAttributeValue(LivingEntity.java:1849) ~[forge:?] {re:classloading} at net.minecraft.entity.LivingEntity.getMaxHealth(LivingEntity.java:1610) ~[forge:?] {re:classloading} at net.minecraft.entity.LivingEntity.<init>(LivingEntity.java:209) ~[forge:?] {re:classloading} at net.minecraft.entity.MobEntity.<init>(MobEntity.java:108) ~[forge:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.entity.CreatureEntity.<init>(CreatureEntity.java:13) ~[forge:?] {re:classloading} at net.mattbaker.guardscraft.enemies.bandit.BanditEntity.<init>(BanditEntity.java:39) ~[?:?] {re:classloading} at net.minecraft.entity.EntityType.create(EntityType.java:448) ~[forge:?] {re:classloading} at net.minecraft.entity.EntityType.create(EntityType.java:332) ~[forge:?] {re:classloading} at net.minecraft.entity.EntityType.spawn(EntityType.java:321) ~[forge:?] {re:classloading} at net.minecraft.entity.EntityType.spawn(EntityType.java:316) ~[forge:?] {re:classloading} at net.mattbaker.guardscraft.enemies.bandit.BanditSpawn.onItemUse(BanditSpawn.java:77) ~[?:?] {re:classloading} at net.minecraftforge.common.ForgeHooks.onPlaceItemIntoWorld(ForgeHooks.java:613) ~[forge:?] {re:classloading} at net.minecraft.item.ItemStack.onItemUse(ItemStack.java:191) ~[forge:?] {re:classloading} at net.minecraft.server.management.PlayerInteractionManager.func_219441_a(PlayerInteractionManager.java:359) ~[forge:?] {re:classloading} at net.minecraft.network.play.ServerPlayNetHandler.processTryUseItemOnBlock(ServerPlayNetHandler.java:986) ~[forge:?] {re:classloading} at net.minecraft.network.play.client.CPlayerTryUseItemOnBlockPacket.processPacket(CPlayerTryUseItemOnBlockPacket.java:45) ~[forge:?] {re:classloading} at net.minecraft.network.play.client.CPlayerTryUseItemOnBlockPacket.processPacket(CPlayerTryUseItemOnBlockPacket.java:12) ~[forge:?] {re:classloading} at net.minecraft.network.PacketThreadUtil.lambda$checkThreadAndEnqueue$0(PacketThreadUtil.java:19) ~[forge:?] {re:classloading} at net.minecraft.util.concurrent.TickDelayedTask.run(TickDelayedTask.java:20) ~[forge:?] {re:classloading} at net.minecraft.util.concurrent.ThreadTaskExecutor.run(ThreadTaskExecutor.java:139) ~[forge:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.util.concurrent.RecursiveEventLoop.run(RecursiveEventLoop.java:22) ~[forge:?] {re:classloading} at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:758) ~[forge:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:159) ~[forge:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.util.concurrent.ThreadTaskExecutor.driveOne(ThreadTaskExecutor.java:109) ~[forge:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.server.MinecraftServer.driveOneInternal(MinecraftServer.java:741) ~[forge:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.server.MinecraftServer.driveOne(MinecraftServer.java:735) ~[forge:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.util.concurrent.ThreadTaskExecutor.drainTasks(ThreadTaskExecutor.java:97) ~[forge:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.server.MinecraftServer.runScheduledTasks(MinecraftServer.java:720) ~[forge:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.server.MinecraftServer.func_240802_v_(MinecraftServer.java:667) ~[forge:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.server.MinecraftServer.lambda$startServer$0(MinecraftServer.java:233) ~[forge:?] {re:classloading,pl:accesstransformer:B} at java.lang.Thread.run(Thread.java:748) [?:1.8.0_271] {} Here my code for the item (based on SpawnEggItem.class) public class BanditSpawn extends Item { public BanditSpawn() { super(new Item.Properties().maxStackSize(1).group(GuardsCraft.setup.itemGroup)); } @Override public ActionResultType onItemUse(ItemUseContext context) { World world = context.getWorld(); if(!(world instanceof ServerWorld)) { return ActionResultType.SUCCESS; } else { ItemStack itemstack = context.getItem(); BlockPos blockpos = context.getPos(); Direction direction = context.getFace(); BlockState blockstate = world.getBlockState(blockpos); TileEntity tileentity = world.getTileEntity(blockpos); if(blockstate.isIn(Blocks.SPAWNER)) { if(tileentity instanceof MobSpawnerTileEntity) { AbstractSpawner abstractspawner = ((MobSpawnerTileEntity)tileentity).getSpawnerBaseLogic(); abstractspawner.setEntityType(Registration.BANDIT.get()); tileentity.markDirty(); world.notifyBlockUpdate(blockpos, blockstate, blockstate, 3); itemstack.shrink(1); return ActionResultType.CONSUME; } } BlockPos blockpos1; if(blockstate.getCollisionShape(world, blockpos).isEmpty()) { blockpos1 = blockpos; } else { blockpos1 = blockpos.offset(direction); } if(Registration.BANDIT.get().spawn((ServerWorld) world, itemstack, context.getPlayer(), blockpos1, SpawnReason.SPAWN_EGG, true, !Objects.equals(blockpos, blockpos1) && direction == Direction.UP) != null) { itemstack.shrink(1); } return ActionResultType.SUCCESS; } } } My Registration : public class Registration { private static final DeferredRegister<Item> ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, GuardsCraft.MOD_ID); public static void init() { ITEMS.register(FMLJavaModLoadingContext.get().getModEventBus()); } public static final RegistryObject<EntityType<BanditEntity>> BANDIT = ENTITIES.register("bandit", () -> EntityType.Builder.create(BanditEntity::new, EntityClassification.CREATURE).setShouldReceiveVelocityUpdates(false).build("bandit")); public static final RegistryObject<BanditSpawn> BANDIT_EGG = ITEMS.register("bandit_egg", BanditSpawn::new); } Maybe more code if needed. Thanks. mattbaker Edited January 8, 20214 yr by mattbaker
January 9, 20214 yr Author That works. Thanks you. private void setup(final FMLCommonSetupEvent event) { event.enqueueWork(() -> { GlobalEntityTypeAttributes.put(Registration.BANDIT.get(), BanditEntity.setCustomAttributes().create()); }); }
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.