update from 1.16 to 1.18:
instructions above work line-for-line, with no semantic changes. the dialect has changed however. in addition to common changes (level instead of world, etc.), here's a list of things you need to change that are related to making and registering a simple entity:
instead of Biome.Category.SWAMP write Biome.BiomeCategory.SWAMP
instead of EntityClassification.CREATURE write MobCategory.CREATURE
instead of MobSpawnInfo.Spawners write MobSpawnSettings.SpawnerData
instead of EntityPredicate use TargetingConditions
instead of DataParameter/EntityDataManager/DataSerializers write EntityDataAccessor/SynchedEntityData/EntityDataSerializers
instead of IParticleData write ParticleOptions
instead of AttributeModifierMap.MutableAttribute write AttributeSupplier.Builder
instead of SpawnReason write MobSpawnType
instead of ILivingEntityData write SpawnGroupData
instead of MovementController write MoveControl
instead of WorldEntitySpawner write NaturalSpawner
instead of EntitySpawnPlacementRegistry.PlacementType write SpawnPlacements.Type
instead of RenderingRegistry.registerEntityRenderingHandler write EntityRenderers.register